读RTL8139驱动自己的总结(PCI相关)

来源:互联网 发布:数据开放平台架构 编辑:程序博客网 时间:2024/05/16 12:19

启动的时候,PCI总线驱动会扫描总线上所有的PCI设备,为每一个设备创建一个struct pci_dev结构,相当于设备的配置空间的信息结构,所以系统在启动后,没有加载驱动前,列出所有PCI设备的信息。当系统检测到某个PCI设备时,将为该设备分配中断号、存储空间基址等,这些信息都被填入PCI设备的配置空间中,即填入struct pci_dev *pdev中,驱动程序只要访问这个数据结构,就可以读出PCI设备的信息。

模块初始化的时候,调用pci_module_init()根据id_table的信息(在pci_driver中),将device,device对应的pci_dev,device对应的driver三者联系起来。以sis900driver为例,它先注册一个pci_driver,找出真正的pci_device,然后在init程序中把pci_devicenet_device关联起来.

 

1. 初始化函数:rtl8139_init_onertl8139_init_board

2. 打开函数:rtl8139_open,初始化DMA空间,调用rtl8139_hw_start开启设备,调用netif_start_queue通知上层可以发数据下来了。

3. 总的中断函数:rtl8139_interrupt

4. 接收新数据中断函数:rtl8139_rx_interrupt

5. 发送完毕中断函数:rtl8139_tx_interrupt

6. 发送函数:rtl8139_start_xmit

原创粉丝点击