回复 #1 Godbach 的帖子
这篇PDF写的很好,谢谢楼主 收藏! 谢谢godbach兄弟。 本帖最后由 道无名 于 2010-07-31 05:25 编辑网卡驱动中通常要读取设备的相关信息,由于网卡是标准的PCI设备,其前64bytes格式是固定的。配置信息也就是 ...
Godbach 发表于 2009-04-14 18:42 http://linux.chinaunix.net/bbs/images/common/back.gif
这里的ops是在枚举进行开始时复制的,当作参数传入。通过的是pci_root_ops传入的,成为了总线遍历方法,在pci_root_ops类型中,定义了.read和.write两个函数指针,分别是pci_read,pci_write.这两个引用的是raw_pci_read.而它执行的是raw_pci_ops->read.
raw_pci_ops是struct pci_raw_ops类型的,在决定枚举pci设备type类型的时候,比如是type1,则是raw_pci_ops=&pci_direct_conf1.在这里就已经得到了赋值。
然后开始遍历0总线的时候,引用函数中,将这个当作ops的参数传了过去。
归根结底,这个预定义宏还是要回归到pci_direct_conf1的读写方法。
而这个传入的参数,也会写入bus结构的相应ops字段内,成为这条总线下其他设备的ops.
在下水平十分浅显低微,如有错的地方还望多海涵。 谢谢Godbach,有没有8187的 这个驱动分析的应该是咱们常用的那种台式机的网卡。如果有条件了,可以手动的调试一下这个驱动程序,可以加深对网卡驱动的理解。
哦,我还以为是无线的那种,想在我的本本上加载无线的8187驱动