fi = ERR_PTR(-ENOENT);
mutex_lock(&func_lock);
list_for_each_entry(fd, &func_list, list) {
if (strcmp(name, fd->name)) continue;
if (!try_module_get(fd->mod)) {
fi = ERR_PTR(-EBUSY); break;
}
fi = fd->alloc_inst(); if (IS_ERR(fi))
module_put(fd->mod); else
fi->fd = fd; break;
}
mutex_unlock(&func_lock); return fi;
}
struct usb_function_instance *usb_get_function_instance(constchar *name)
{ struct usb_function_instance *fi; int ret;
fi = try_get_usb_function_instance(name); if (!IS_ERR(fi)) return fi;
ret = PTR_ERR(fi); if (ret != -ENOENT) return fi;
ret = request_module("usbfunc:%s", name); if (ret < 0) return ERR_PTR(ret); return try_get_usb_function_instance(name);
}
EXPORT_SYMBOL_GPL(usb_get_function_instance);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.