什么是Linux设备驱动程序代码中的MODULE_ALIAS?

时间:2014-04-01 06:58:06

标签: c linux linux-kernel linux-device-driver spi

code中的MODULE_ALIAS说明

/* work with hotplug and coldplug */
MODULE_ALIAS("platform:omap2_mcspi");

但是,究竟什么是MODULE_ALIAS?

参数中有(冒号)的意义吗?

1 个答案:

答案 0 :(得分:9)

MODULE_ALIAS是宏,在2002年添加了linux内核模块加载器的更新,并从2003年开始使用。这个宏允许模块创建者定义模块的其他名称(别名),例如自动加载模块更容易。

别名用于提供一些特殊名称,例如: "嵌段主要-100"直接在模块源中,而不是使用/etc/modules.conf来定义别名。当用户程序访问主设备号为100的块设备时,内核将尝试加载" block-major-100"。没有MODULE_ALIAS内核应该转到用户空间并使用帮助程序读取/etc/modules.conf。使用MODULE_ALIAS("block-major-100")内核将自行解决搜索问题。

您可以在http://lwn.net/Articles/47412/" MODULE_ALIAS"中详细了解此宏。 corbet的文章,2003-09-03。

还有几个特殊版本的MODULE_ALIAS,由corbet列出:

  

使用的实际变体取决于子系统;例如,块驱动程序使用MODULE_ALIAS_BLOCKDEV,而char设备使用MODULE_ALIAS_CHARDEV或MODULE_ALIAS_MISCDEV,网络协议使用MODULE_ALIAS_NETPROTO。

根据2011 patch from Mans Rullgard (linaro)commit by Kay Sievers (vrfy),使用MODULE_ALIAS之类的参数"platform:...来启用模块自动加载" 当平台设备扫描。"。在SPI驱动程序中,它用于" 可热插拔SPI平台驱动程序,以允许模块自动加载。",自Kay Sievers以来的43cc71eed1250755986da4c0f9898f9a635cb3bf - " platform: prefix MODALIAS with "platform:" ":

  

使用" platform:"前缀平台模式字符串,其中   modprobe配置为黑名单别名解析用户空间   配置它。

使用"平台的驱动程序别名:"用于drivers/base/platform.c文件,function modalias_show(...)snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name);)和platform_uevent(...) add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, pdev->name);,其中PLATFORM_MODULE_PREFIX宏定义为"platform:"(所以,冒号是重要的。)