code中的MODULE_ALIAS说明
/* work with hotplug and coldplug */
MODULE_ALIAS("platform:omap2_mcspi");
但是,究竟什么是MODULE_ALIAS?
参数中有(冒号)的意义吗?
答案 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:"
(所以,冒号是重要的。)