
module_usb_driver(usb_storage_driver);
宏展开如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
module_driver(__usb_driver, usb_register, usb_deregister)
#define module_driver(__driver, __register, __unregister, ...) static int __init __driver##_init(void) { return __register(&(__driver) , ##__VA_ARGS__); } module_init(__driver##_init); static void __exit __driver##_exit(void) { __unregister(&(__driver) , ##__VA_ARGS__); } module_exit(__driver##_exit);
|
所以等价于:
1 2 3 4 5 6 7 8 9 10
|
static int __init (void) { return usb_register(&(usb_storage_driver)); } module_init(usb_storage_driver_init); static int __init usb_storage_driver_exit(void) { return usb_deregister(&(usb_storage_driver)); } module_exit(usb_storage_driver_exit);
|
usb_register
挂载在usb_bus_type上
1 2 3 4 5 6 7 8 9 10 11
|
#define usb_register(driver) usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
int usb_register_driver(struct usb_driver *new_driver, struct module *owner, const char *mod_name) { new_driver->drvwrap.for_devices = 0; new_driver->drvwrap.driver.bus = &usb_bus_type;
retval = driver_register(&new_driver->drvwrap.driver); }
|
近期评论