Linux
文章平均质量分 61
Linux操作系统相关知识学习记录
jeawayfox
这个作者很懒,什么都没留下…
展开
-
CPU大小端和网络序的理解
不同Endian的CPU,从内存读取数据的时候,按自己的Endian模式转换数据,放入CPU的寄存器reg中,假如寄存器是32bits,此时寄存器bit31存储数据的MSB高位,即寄存器bit[31-0]符合我们人类的阅读顺序(我们程序中定义的变量,是在CPU寄存器完成操作,因此在编程时对变量值的赋值或者读取是符合人类阅读顺序的)。数据从CPU写入到内存,同样需要类似的转换。Adminq中的data,对应的是网卡内部的Memory,可能是u32,u16,u8类型,软件要选择和硬件对齐的数据类型来定义。原创 2023-07-05 11:26:00 · 403 阅读 · 0 评论 -
ixgbe网卡Linux内核驱动收发包机制 示意图
ixgbe是intel在linux内核中的驱动代码,其收发包的示意图如下。Intel的收发两个方向队列,用同一个中断源,所以tx之后的skb在rx的poll中回收。网卡驱动程序和Linux的设备控制内核架构有很大关系,pcie的设备管理,netdev的管理,同时还有中断注册,netdev ops和ethtool ops等等,都是在linux系统平台上有成熟的框架,驱动程序仅仅是适配这些框架的接口。网卡硬件可能仅仅支持多个队列,也可能支持很多队列,本示意图仅仅以2个队列为例。...原创 2021-07-15 18:04:34 · 725 阅读 · 0 评论