代码之家  ›  专栏  ›  技术社区  ›  Sagar Jain

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

  •  13
  • Sagar Jain  · 技术社区  · 11 年前

    中MODULE_ALIAS的说明 code

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

    但是,MODULE_ALIAS到底是什么?

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

    1 回复  |  直到 8 年前
        1
  •  16
  •   osgx    11 年前

    MODULE_ALIAS 是宏,2002年随linux内核模块加载器的更新而添加,自2003年起使用。此宏允许模块创建者定义模块的其他名称(别名),例如,使模块的自动加载更容易。

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

    您可以在中阅读有关此宏的详细信息 http://lwn.net/Articles/47412/ corbet的“MODULE_ALIAS”文章,2003-09-03。

    有几个更特殊的版本 模块_别名 ,由corbet列出:

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

    根据 2011 patch from Mans Rullgard (linaro) ,或到 commit by Kay Sievers (vrfy) , 模块_别名 具有类似于 "platform:... 用于启用模块自动加载“ 当扫描平台设备时。 在SPI驱动程序中,它用于 可热插拔SPI平台驱动程序,以允许模块自动加载。 “,自Kay Sievers的43cc71eed1250755986da4c0f9898f9a635cb3bf以来-” platform: prefix MODALIAS with "platform:" ":

    在平台modalias字符串前面加上“platform:” modprobe配置为黑名单别名解析如果用户空间 配置它。

    带有“platform:”的驱动程序别名用于 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:" (因此,冒号标记很重要)。