网络设备的初始化主要完成如下几个方面的工作。
对 net_device 结构体成员及私有数据的赋值都可能需要与硬件初始化工作协同进行,即硬件检测出了相应的资源,需要根据检测结果填充 net_device 结构体成员和私有数据。
网络设备驱动的初始化函数模板如下所示,具体的设备驱动初始化函数并不一定和以下模板完全一致,但其本质过程是一致的。
/* * 网络设备驱动的初始化函数模板 */ void xxx_init(struct net_device *dev) { /* 设备的私有信息结构体 */ struct xxx_priv *priv; /* 检查设备是否存在和设备所使用的硬件资源 */ xxx_hw_init(); /* 初始化以太网设备的公用成员 */ ether_setup(); /* 设置设备的成员函数指针 */ ndev->netdev_ops = &xxx_netdev_ops; ndev->ethtool_ops = &xxx_ethtool_ops; dev->watchdog_timeo = timeout; /* 取得私有信息,并初始化它 */ priv = netdev_priv(dev); ``` /* 初始化设备私有数据区 */ }
上述代码的 xxx_hw_init( ) 函数完成的与硬件相关的初始化操作如下:
原文:https://www.cnblogs.com/wanglouxiaozi/p/13378921.html