最終更新:2014-05-11 (日) 19:21:21 (3631d)  

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);

メモ

マクロ

/**
 * 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);

呼び出し元

関連