rem: * if we are used cached information.
add: * if we are using cached information.
context: get_module(const char *path, module_info **_info){	module_image *moduleImage;	module *module;	status_t status;	TRACE(("get_module(%s)\n", path));	if (path == NULL)		return B_BAD_VALUE;	recursive_lock_lock(&gModulesLock);	module = (struct module *)hash_lookup(gModulesHash, path);	// if we don't have it cached yet, search for it	if (module == NULL) {		module = search_module(path);		if (module == NULL) {			FATAL(("module: Search for %s failed.\n", path));			goto err;		}	}	/* We now need to find the module_image for the module. This should	 * be in memory if we have just run search_modules, but may not be	 * if we are used cached information.	 * We can't use the module->module_image pointer, because it is not	 * reliable at this point (it won't be set to NULL when the module_image	 * is unloaded).	 */	if (get_module_image(module->file, &moduleImage) < B_OK)		goto err;	// (re)set in-memory data for the loaded module	module->info = moduleImage->info[module->offset];	module->module_image = moduleImage;	// the module image must not be unloaded anymore	if (module->keep_loaded)		module->module_image->keep_loaded = true;	inc_module_ref_count(module);	// The state will be adjusted by the call to init_module	// if we have just loaded the file	if (module->ref_count == 1)		status = init_module(module);	else		status = B_OK;	recursive_lock_unlock(&gModulesLock);	if (status == B_OK)		*_info = module->info;	return status;err:	recursive_lock_unlock(&gModulesLock);	return B_ENTRY_NOT_FOUND;}