网络驱动之net_device结构体
在Linux系统中,网络设备都被抽象为struct net_device结构体。它是网络设备硬件与上层协议之间联系的接口,了解它对编写网络驱动程序非常有益,所以本文将着手简要介绍linux-2.6.38.8/include/linux/netdevice.h文件中struct net_device结构体的所有成员(没有按照它们定义的顺序)。 1、网络设备相关信息 (1)、设备名 char name[IFNAMSIZ]; char *ifalias; //用于SNMP协议 在Linux系统中,每个网络设备都有一个唯一的设备名(如eth0,字母部分代表网络设备的类型,数字部分代表此类网络设备的数量)。 (2)、电源管理服务质量( power managementQuality Of Service) struct pm_qos_request_list pm_qos_req; 用于Wi-Fi和千兆以太网,可以帮助控制网络的延迟和带宽的需求,以达到在可用的前提下省电的目的。 (3)、硬件信息 //网络设备内存映射时在主机中的内存区域 unsigned long mem_end; unsigned long mem_start; //网络设备I/O基地址 unsigned long base_addr; //中断号 unsigned int irq; //传输介质,如双绞线、同轴电缆等