最終更新:2014-05-11 (日) 19:21:21 (3609d)
module_driver
Top / module_driver
Helper macro for drivers that don't do anything special in module init/exit.
展開例
- 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);
メモ
- Linux 3.3以降で実装
マクロ
/** * module_driver() - Helper macro for drivers that don't do anything * special in module init/exit. This eliminates a lot of boilerplate. * Each module may only use this macro once, and calling it replaces * module_init() and module_exit(). * * @__driver: driver name * @__register: register function for this driver type * @__unregister: unregister function for this driver type * @...: Additional arguments to be passed to __register and __unregister. * * Use this macro to construct bus specific macros for registering * drivers, and do not use it on its own. */ #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);
呼び出し元
- module_gameport_driver?
- module_hid_driver
- module_i2c_driver?
- module_pci_driver?
- module_platform_driver
- module_spi_driver?
- module_serio_driver
- module_usb_driver
- module_virtio_driver?
関連
- module_init
- module_exit?