rem: TRACE(("load_driver: Success\n"));
add: TRACE(("load_driver: Success \"%s\"\n", ((struct module_info *)(*interface))->name));
context: pnp_load_driver(pnp_node_handle node, void *user_cookie, 	pnp_driver_info **interface, void **cookie){	status_t res;	TRACE(("pnp_load_driver()\n"));	if (node == NULL)		return B_BAD_VALUE;	benaphore_lock(&gNodeLock);	if (!node->registered) {		benaphore_unlock(&gNodeLock);		TRACE(("Refused loading as driver got unregistered\n"));		return B_NAME_NOT_FOUND;	}	// increase ref_count whenever someone loads the driver	// to keep node information alive	++node->ref_count;	if (node->load_count == 0) {		// driver is not loaded		// tell others that someone will load the driver		// (after this, noone is allowed to block loading)		++node->loading;		// wait until loading is not blocked		pnp_wait_load_block(node);		// make sure noone else load/unloads/notifies the driver		pnp_start_hook_call_nolock(node);		// during load, driver may register children;		// probing them for consumers may be impossible as they 		// may try to load driver -> deadlock		// so we block probing for consumers of children		pnp_defer_probing_of_children_nolock(node);		if (!node->registered) {			// device got lost meanwhile			TRACE(("Device got lost during wait\n"));			res = B_NAME_NOT_FOUND;		} else if (node->load_count == 0) {			// noone loaded the driver meanwhile, so			// we have to do that			benaphore_unlock(&gNodeLock);			TRACE(("Driver will be loaded\n"));			res = load_driver_int(node, user_cookie);			benaphore_lock(&gNodeLock);		} else {			// some other thread loaded the driver meanwhile			TRACE(("Driver got loaded during wait\n"));			res = B_OK;		}		// info: the next statements may have a strange order,		// but as we own node_lock, order is not important		// finish loading officially		// (don't release node_lock before load_count gets increased!)		--node->loading;				// unblock concurrent load/unload/notification 		pnp_finish_hook_call_nolock(node);		if (res == B_OK) {			// everything went fine - increase load counter			++node->load_count;			// now we can safely probe for consumers of children as the			// driver is fully loaded			pnp_probe_waiting_children_nolock(node);		} else {			// loading failed or device got removed - restore reference count;			// but first (i.e. as long as ref_count is increased) get 			// rid of waiting children			pnp_probe_waiting_children_nolock(node);			pnp_remove_node_ref_nolock(node);		}	} else {		// driver is already loaded, so increase load_count		++node->load_count;		res = B_OK;	}	benaphore_unlock(&gNodeLock);	if (res == B_OK) {		if (interface)			*interface = node->driver;		if (cookie)			*cookie = node->cookie;		TRACE(("load_driver: Success\n"));	} else {		TRACE(("load_driver: Failure (%s)\n", strerror(res)));	}	return res;	}