将附加信息附加到Linux Kernel中的SKB缓冲区

时间:2017-09-01 17:24:57

标签: c linux memory-management linux-kernel

Linux内核中的skb结构中是否有任何额外的或可用的字段,我可以在处理数据包时存储我的私人信息?如果有这样的字段,我如何分配内存来存储我的数据?基本上我想以微秒分辨率存储当前时间戳。

注意:我使用的是Linux内核4.4.83

1 个答案:

答案 0 :(得分:0)

字段skb_mstamp怎么样?我在4.4.83内核中找到了这个,看起来像是微秒分辨率。

另外,您可以考虑cb字段。该字段上方的评论 struct定义说:

/*
 * This is the control buffer. It is free to use for every
 * layer. Please put your private variables there. If you
 * want to keep them across layers you have to do a skb_clone()
 * first. This is owned by whoever has the skb queued ATM.
 */
char            cb[48] __aligned(8);

因此,这是一个48字节的存储空间(不需要内存分配),理论上您可以尝试使用它来存储时间戳。我建议搜索" skb-> cb"在内核源代码的 drivers / net / ethernet 子树中的用法。 我希望你能看到司机如何利用这个领域存储他们需要的任何信息,这对你来说很方便。