MODULE_DEVICE_TABLE
来源:互联网 发布:商品期货行情数据接口 编辑:程序博客网 时间:2024/05/17 13:41
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_TABLEaccomplishes 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. Afterdepmod 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 themodules.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
类似的有:
- MODULE_LICENSE("许可证");
- MODULE_AUTHOR("模块作者");
- MODULE_DESCRIPTION("模块用途描述");
- MODULE_VERSION("代码修订号");
- MODULE_ALIAS("模块的别名");
- MODULE_DEVICE_TABLE("模块支持的设备")
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE函数
- [Linux] MODULE_DEVICE_TABLE
- MODULE_DEVICE_TABLE的理解
- MODULE_DEVICE_TABLE的理解
- MODULE_DEVICE_TABLE的理解
- MODULE_DEVICE_TABLE宏的理解
- MODULE_DEVICE_TABLE的用法
- c#2.0新特性:(一)泛型(Generics)
- c#2.0新特性:(二)匿名方法(Anonymous Methods)
- c#2.0新特性:(三)迭代器(Iterators)
- .NET中如何取得汉字或者拼音首字母(附源代码)
- ASP.NET程序中常用的三十三种代码(转载)
- MODULE_DEVICE_TABLE
- Windows Server 2008常用优化设置
- 模拟一个按键值 给系统处理
- mysqldb
- Intent 的 隐式意图
- 现在世界的文明是建立在欧洲文明之上的
- Sicily.1036. Crypto Columns
- 银行系统
- 用matlab的plot画图的几种用法