一尘不染

难以理解MODULE_DEVICE_TABLE(usb,id_table)的用法

linux

我很难理解的确切用法 MODULE_DEVICE_TABLE(usb, id_table)

AFAIK将生成地图文件,modprobe每当插入新设备时,它将在以后使用该地图文件,它将与这些地图文件进行匹配,并在匹配时加载模块。

但是我的误解是“模块是否仍在加载?”

我的意思是说我已经加载了insmod module-name。还是我错过了什么?


阅读 1705

收藏
2020-06-03

共1个答案

一尘不染

通常通过加载/插入设备的驱动程序(如果尚未加载)来支持热插拔。

(来自我的回答)

其工作方式如下:

  1. 代码中的每个驱动程序都使用以下方式公开其供应商/设备ID:

      MODULE_DEVICE_TABLE(of, omap_mcspi_of_match);
    
  2. 在编译时,构建过程将从所有驱动程序中提取此信息,并准备一个设备表。

  3. 插入设备时,内核会引用设备表,并且如果找到与添加设备的设备/供应商ID匹配的条目,则将加载并初始化其模块。

2020-06-03