latest kernel platform register

在內核中,對於platform的註冊有了很大變化,之前的platfrom_device全部歸於到了device tree,同時註冊的platform_driver的過程也不再需要原來的函數,而是統一用module_platform_driver,而其實它的內部還是用到了之前的函數,只是這裏統一用一個宏來表示,它的定義在是include/linux/platfrom_device.h下,如下:

 

#define module_platform_driver(__platform_driver) \
	module_driver(__platform_driver, platform_driver_register, \
			platform_driver_unregister)
 
#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_init和module_exit全部用一個宏來代替,所以在我們的driver文件的remove函數中,就不用調用platform_driver_unregister,當然,你如果調也不會有問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章