net_device和网卡私有数据结构是一起分配的,要想获得网卡私有数据结构的地址,文件1中的函数netdev_priv直接返回了net_device结构末端地址,也就是网卡私有数据结构的起始地址。当然其中考虑了字节对齐的问题。至于为什么不直接返回:
sturct nic *nic = dev->priv;
sturct nic *nic = dev->priv;
《Linux Devcie Drivers》中说是为了性能和灵活性方面的考虑。
现在的话,直接引用dev->priv会提示没有该成员;不知道是不是修改之后的net_device结构发生了变化?
net_device与网卡私有数据结构的分配与引用
本文详细阐述了net_device和网卡私有数据结构的分配方式,通过分析函数netdev_priv如何直接返回net_device结构末端地址来获取网卡私有数据结构的起始地址,并解释了为什么不直接引用dev->priv的原因,涉及性能和灵活性方面的考量。
557

被折叠的 条评论
为什么被折叠?



