转自:http://blog.csdn.net/tangkegagalikaiwu/article/details/8444249

This pci_device_id structure needs to be exported to user space to allow the hotplug and module loading systems know what module works with what hardware devices. The macroMODULE_DEVICE_TABLE accomplishes this. An example is:

MODULE_DEVICE_TABLE(pci, i810_ids);

This statement creates a local variable called _ _mod_pci_device_table that points to the list ofstructpci_device_id. Later in the kernel build process, the depmod program searches all modules for the symbol _ _mod_pci_device_table. If that symbol is found, it pulls the data out of the module and adds it to the file/lib/modules/KERNEL_VERSION/modules.pcimap. After depmod completes, all PCI devices that are supported by modules in the kernel are listed, along with their module names, in that file. When the kernel tells the hotplug system that a new PCI device has been found, the hotplug system uses the modules.pcimap file to find the proper driver to load.

/* Define these values to match your devices */

#define USB_SKEL_VENDOR_ID  0xfff0 
#define USB_SKEL_PRODUCT_ID 0xfff0 
/* table of devices that work with this driver */ 
static struct usb_device_id skel_table [] = { 
     { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) }, 
     { }                    /* Terminating entry */ 
}; 
MODULE_DEVICE_TABLE (usb, skel_table);

MODULE_DEVICE_TABLE的第一个参数是设备的类型,如果是USB设备,那自然是usb(如果是PCI设备,那将是pci,这两个子系统用同一个宏来注册所支持的设备。这涉及PCI设备的驱动了,在此先不深究)。后面一个参数是设备表,这个设备表的最后一个元素是空的,用于标识结束。代码定义了USB_SKEL_VENDOR_ID是0xfff0,USB_SKEL_PRODUCT_ID是0xfff0,也就是说,当有一个设备接到集线器时,usb子系统就会检查这个设备的vendor ID和product ID,如果它们的值是0xfff0时,那么子系统就会调用这个skeleton模块作为设备的驱动。

如果有几个驱动文件同时调用了MODULE_DEVICE_TABLE(pci,***),那么hotplug调用哪个哪个驱动?是不是就是调用该宏的本模块,本module,本驱动。应该是的,看上面红色字部分  along with their module names

类似的有:

  1. MODULE_LICENSE("许可证");
  2. MODULE_AUTHOR("模块作者");
  3. MODULE_DESCRIPTION("模块用途描述");
  4. MODULE_VERSION("代码修订号");
  5. MODULE_ALIAS("模块的别名");
  6. MODULE_DEVICE_TABLE("模块支持的设备")

MODULE_DEVICE_TABLE【转】相关推荐

  1. module是什么类型_Linux驱动开发:为什么教程都不讲MODULE_DEVICE_TABLE的作用

    1.疑问 在阅读linux源代码时发现,在驱动中大量使用了MODULE_DEVICE_TABLE这个宏. MODULE_DEVICE_TABLE(platform, s3c_adc_driver_id ...

  2. MODULE_DEVICE_TABLE的用法

    MODULE_DEVICE_TABLE (usb, skel_table) 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为__mod_p ...

  3. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  4. I.MX6 bq27441 driver hacking

    /************************************************************************** I.MX6 bq27441 driver hac ...

  5. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇

    关键词:android 电池  电量计  MAX17040 任务初始化宏 power_supply 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  ...

  6. ARM Linux 3.x的设备树(Device Tree)【转】

    转自:http://blog.csdn.net/21cnbao/article/details/8457546 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ARM Devi ...

  7. linux 脚本给设备节点权限,[Linux] I2C设备读写及文件节点创建

    Linux Kernel Version:3.0.35 Platform:Freescale DSA2L 通过I2C读取VGA屏的EDID信息(主要是分辨率),解析后喂给CH7036芯片(LVDS转V ...

  8. pinctrl框架【转】

    转自:http://www.cnblogs.com/kevinhwang/p/5703192.html pinctrl框架是linux系统为统一各SOC厂家pin管理,目的是为了减少SOC厂家系统移植 ...

  9. Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】

    转自:http://blog.csdn.net/lugandong/article/details/48092397 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 前言 方式 ...

最新文章

  1. 又一年5.20,用Python助力程序员脱单大攻略(视频版)
  2. 如何在命令行上创建符合特定规范的密码?
  3. 新手理解的JS原型链 1
  4. linux订阅软件包,安装 Manjaro Linux 后必做的 6 件事 | Linux 中国
  5. 《面向对象程序设计》第六次作业(图形化界面)
  6. mysql 优化器提示_Mysql查询优化器
  7. linux perl 执行java,如何从Java调用Perl?
  8. 计算机无法检测到键盘,检测到不兼容的键盘驱动程序,小编教你电脑提示检测到不兼容的键盘驱动怎么办...
  9. 微信配网airkiss
  10. 漏洞挖掘——实验9 SQL Injection Attack Lab
  11. SQL Story(十)————游标的应该与不应该 (转)
  12. android图片分割点击,Android中图片切割成多个图片的实现方法
  13. java——集合详解
  14. 基于阿里云API的图像文字识别
  15. 微信小程序--js中string转换为number
  16. TEB算法详解(TebLocalPlannerROS::computeVelocityCommands(1))
  17. 机器学习-随机森林算法梳理
  18. 知识分享:电脑可以使用的pdf翻译软件哪个好用?
  19. 常见linux命令介绍-ps
  20. IDC:中国人工智能及自动化市场十大预测

热门文章

  1. 伯克利人工智能导论课开放:视频、PPT和练习都在这 | 资源
  2. 硅谷半夜3点惊现无人驾驶特斯拉!百公里时速飞驰,交警围追10公里才逼停
  3. 肖健雄的无人车公司AutoX,现在要在美国配送生鲜了
  4. 喜欢赌球的你,可能被AI盯上了
  5. 阿里投资小鹏汽车,是提速自动驾驶布局的开端吗?
  6. 深度学习蚕食软件,十年内大部分软件工作不再涉及编程
  7. php扩展模块作用及中文注释
  8. WordPress 客户端软件列表
  9. C# 获取COM控件注册状态,注册以及反注册COM控件
  10. Puppet的安装部署