摘要:
在注册网络设备时,会调用pci_driver->probe函数,以e100网卡驱动为例,其最终会调用alloc_netdev_mqs来分配内存,并且在分配内存后调用setup函数(以太网为ether_setup)初始化二层地址等信息。下面以e100为例,分析alloc_netdev_mqs函数和et 阅读全文
摘要:
net_device结构是二层中一个非常重要的结构,其结构中成员很多,包含了硬件信息,接口信息,其他辅助信息,以及设备操作函数等等;下面对其中重要的字段含义进行了标注,目前仍在阅读代码过程中,其中某些字段含义会在后面进行补充或者更新; 1 struct net_device { 2 /* 设备名称, 阅读全文
摘要:
每个pci驱动都有一个pci_driver实例,用以描述驱动名称,支持的设备信息,以及对应的操作函数; 1 /* 2 描述一个pci设备,每个pci驱动必须创建一个pci_driver实例 3 */ 4 struct pci_driver { 5 struct list_head node; 6 / 阅读全文
摘要:
标准PCI设备都有一个配置寄存器,用来存储各种参数; 1 /* pci设备配置寄存器 */ 2 struct pci_device_id { 3 /* 厂商id,设备id */ 4 __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID 阅读全文