module_platform_driver
时间: 2023-10-22 17:07:10 浏览: 38
`module_platform_driver` 是 Linux 内核中的一个宏,它简化了驱动程序的编写过程。该宏允许开发人员编写模块化的平台驱动程序,这些驱动程序可以在多个硬件平台上运行,而无需更改代码。`module_platform_driver` 宏将 `module_driver` 和 `platform_driver_probe` 宏组合在一起,以便同时完成驱动程序的注册和设备的探测。当驱动程序被加载时,它将自动检测与之匹配的硬件设备,并注册相应的驱动程序。这使得驱动程序的编写更加简单和可移植。
相关问题
内核宏定义module_platform_driver展开
module_platform_driver 是一个宏定义,它主要用于注册一个平台驱动。具体来说,它会创建一个特殊的字符设备,并在内核中注册一个平台驱动程序。这个宏定义的展开大致如下:
```
#define module_platform_driver(__platform_driver) \
static int __init __platform_driver##_init(void) \
{ \
return platform_driver_register(&(__platform_driver)); \
} \
module_init(__platform_driver##_init); \
static void __exit __platform_driver##_exit(void) \
{ \
platform_driver_unregister(&(__platform_driver)); \
} \
module_exit(__platform_driver##_exit);
```
这个宏定义在内核中用来简化注册平台驱动的过程,常见的用法如下:
```
static struct platform_driver my_driver = {
.probe = my_probe,
.remove = my_remove,
.driver = {
.name = "my_driver",
.of_match_table = of_match_ptr(my_of_match),
},
};
module_platform_driver(my_driver);
```
在这段代码中,我们定义了一个平台驱动 my_driver,然后使用 module_platform_driver 宏定义注册了这个平台驱动。
module_platform_driver 什么时候调用
module_platform_driver 函数是针对平台设备的驱动程序模块的入口函数,可以在模块初始化时调用。当模块被加载时,内核将自动调用该函数,初始化平台驱动程序并将其注册到内核平台设备框架中。在注册完成后,内核可以通过 platform_device_register() 函数向平台设备框架中添加新的平台设备。当平台设备被添加时,内核将自动调用平台驱动程序的 probe() 函数进行设备初始化。因此,module_platform_driver 函数通常在模块的初始化函数中被调用。