“module_xxx_driver”用于编写设备驱动程序调用,分析内核源码可知,其封装了设备的注册和注销函数定义及向内核注册该函数的功能。 module_i2c_driver 以i2c总线为例。其函数宏名称为“module_i2c_driver”,原型位于“kernel/include/linux/i2c.h”中。 /** * module_i2c_driver() - Helper macro for regi...
使用module_platform_driver宏注册平台设备驱动模块: 使用module_platform_driver宏来注册平台设备驱动模块,将上述定义的结构体作为参数传递给宏。例如: module_platform_driver(my_platform_driver); 通过使用 module_platform_driver 宏,内核会在模块加载时自动注册平台设备驱动,并根据驱动的名称与设备树中的设备节点进行匹...
module_exit(usb_serial_module_exit); #define module_usb_serial_driver(__serial_drivers, __ids) \ usb_serial_module_driver(KBUILD_MODNAME, __serial_drivers, __ids) 其本质,也是通过module_init注册为linux下的一个module,然后通过宏展开,封装了usb_serial_register_drivers函数,完成usb_serial向usb cor...
linux 驱动中module_platform_driver宏的学习 一、写linux设备中经常看到有这样一个宏module_platform_driver。如下图一个字符设备驱动程序。今天我们就来学习这个宏的作用。 二、这个宏是在kernel/include/linux/platform_device.h里面定义的。我们发现这个里面又调用另外一个宏module_driver。 三、那么这个mo... ...
i2c_del_driver) include\linux\device.h下module_driver宏定义 /** * 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 ...