module_platform_driver

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011425939/article/details/82872366

该函数实际是一个宏,它在include/linux/platform_device.h中定义如下:

#define module_platform_driver(__platform_driver) \
	module_driver(__platform_driver, platform_driver_register, \
			platform_driver_unregister)

其中的module_driver在/include/linux/device.h中定义,如下:

#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_platform_driver(xxx);

最终展开后就是如下形式:

static int __init xxx_init(void)
{        
	return platform_driver_register(&xxx);
}
module_init(xxx_init);

static void __exit xxx_init(void){        
	return platform_driver_unregister(&xxx);
}
module_exit(xxx_exit);

由上述定义可知,module_platform_driver()宏的作用就是定义指定名称的平台设备驱动注册函数和平台设备驱动注销函数,并且在函数体内分别通过platform_driver_register()函数和platform_driver_unregister()函数注册和注销该平台设备驱动。

猜你喜欢

转载自blog.csdn.net/u011425939/article/details/82872366
今日推荐