pci设备的初始化
来源:互联网 发布:暗黑2优化的高清补丁 编辑:程序博客网 时间:2024/05/01 18:23
我们先来看下pci_driver结构,它的id_table是一个指向当前驱动所能处理的pci设备的id列表,由于每个pci设备都有一个唯一的标记,因此我们通过pci_device_id结构就可以标记不同的pci设备。
driver则指向下一个pci驱动。
当系统boot时,它会为每一个总线创建一个检测到的设备的链表。我们这里只看pci总线,当boot后,有一个包含所有检测到的pci设备的链表,然后他会load所有的通过pci_register_driver注册的pci驱动(也就是一个驱动链表).此后系统会通过pci_device_id来发现每个pci设备所对应的驱动,当匹配好之后,系统会调用相应的probe函数创建和注册相应的网络设备。
可以看下下面的图:
a图 系统拥有一个设备的列表和一个驱动的列表。
b图 系统通过id_table查找到驱动A所对应的设备dev 1和dev 2
c图 系统查找到驱动B对应的设备dev 3
driver则指向下一个pci驱动。
- struct pci_driver {
- struct list_head node;
- char *name;
- const struct pci_device_id *id_table; /* must be non-NULL for probe to be called */
- int (*probe) (struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */
- void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */
- int (*suspend) (struct pci_dev *dev, pm_message_t state); /* Device suspended */
- int (*suspend_late) (struct pci_dev *dev, pm_message_t state);
- int (*resume_early) (struct pci_dev *dev);
- int (*resume) (struct pci_dev *dev); /* Device woken up */
- void (*shutdown) (struct pci_dev *dev);
- struct pm_ext_ops *pm;
- struct pci_error_handlers *err_handler;
- struct device_driver driver;
- struct pci_dynids dynids;
- };
当系统boot时,它会为每一个总线创建一个检测到的设备的链表。我们这里只看pci总线,当boot后,有一个包含所有检测到的pci设备的链表,然后他会load所有的通过pci_register_driver注册的pci驱动(也就是一个驱动链表).此后系统会通过pci_device_id来发现每个pci设备所对应的驱动,当匹配好之后,系统会调用相应的probe函数创建和注册相应的网络设备。
可以看下下面的图:
a图 系统拥有一个设备的列表和一个驱动的列表。
b图 系统通过id_table查找到驱动A所对应的设备dev 1和dev 2
c图 系统查找到驱动B对应的设备dev 3
- PCI设备的初始化
- pci设备的初始化
- pci设备的初始化
- pci设备的初始化
- PCI设备BAR空间的初始化
- PCI设备BAR空间的初始化
- 3.1 PCI设备BAR空间的初始化
- PCI设备BAR空间的初始化
- PMON PCI设备初始化
- WDF----PCI设备初始化
- Linux设备驱动之pci设备的枚举(linux初始化时PCI设备识别)
- 获取PCI设备并初始化
- 获取PCI设备并初始化
- 获取PCI设备并初始化
- 3.1 PCI设备BAR空间的初始化
- pci设备的枚举(转)
- PCI设备内存的访问
- pci设备的枚举(转)
- HDU 2178 猜数字(水题,数学题)
- 在eclipse中修改java和jsp字体
- HDU 1800 Flying to the Mars
- java中instanceof的用法
- Quartz 2D编程指南(2) - 图形上下文
- pci设备的初始化
- iOS面试题汇总(一)
- 小for的Cocos2d-x学习笔记与感悟1之环境搭建
- uva 1339 Ancient Cipher(字符串处理)
- getResource()和getResourceAsStream以及路径问题
- 多校联合第8场1003Mine
- freemarker使用中,如何解决ftl页面自动去除属性值中间空格
- MAC电脑如何安装双系统-----文字阐述篇
- android 4高级编程(第三版)