pci设备的初始化
来源:互联网 发布:浏览器域名劫持 编辑:程序博客网 时间:2024/05/01 15:34
我们先来看下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设备的枚举(转)
- js刷新页面方法大全
- javascript/CSS代码直接运行调试页面
- 工作中用到的sql语名
- 正则匹配是否具有中文,数字,英文字符
- 使用Litespeed读取数据库事务日志
- pci设备的初始化
- Pascal三角
- 清空具有外键约束的表时报ERROR 1701(42000)的解决
- C++类对应的内存结构
- jqeury验证
- GCC检测CUP及编译环境是否支持MMX&SSE
- 从MSN上拔下来的全世界国家下拉框(附带SQL执行脚本)
- HDU 4635 多校第四场 1004 强联通
- 暑期宅在家,不如去传智播客免费学c/c++课程!