【技术】module_i2c_driver 分解

转自:https://blog.csdn.net/u011975319/article/details/52387212

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

猜你喜欢

转载自blog.csdn.net/antchen88/article/details/80410806
今日推荐