module_i2c_driver

#define module_i2c_driver(__i2c_driver)
module_driver(__i2c_driver, i2c_add_driver,
i2c_del_driver)

#define i2c_add_driver(driver)
i2c_register_driver(THIS_MODULE, driver)

module_driver():

#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_i2c_driver(adxl34x_driver)展开就可以得到:

static int __int adxl34x_driver_init(void)
{
return i2c_register_driver(&adxl34x_driver);
}
module_init(adxl34x_driver_init);
static void __exit adxl34x_driver_exit(void)
{
return i2c_del_driver(&adxl34x_driver);
}
module_exit(adxl34x_driver_exit);

原文地址:https://www.cnblogs.com/under/p/10620724.html