如何找出sk_buff结构大小?

时间:2014-07-02 11:40:48

标签: linux linux-kernel kernel linux-device-driver

任何人都可以帮助我解决以下问题:

我计划在现有Linux内核中添加新协议。我怀疑的是如何在使用skb_alloc()调用

分配内存之前找出sk_buff结构大小

2 个答案:

答案 0 :(得分:1)

没有skb_alloc这样的东西。我假设您实际上是要调用alloc_skb或dev_alloc_skb。给alloc_skb的size参数是你想要随之分配的 buffer 大小。你不需要计算sk_buff结构的大小,alloc_skb已经知道了。换句话说,如果您计划接收最大以太网帧(1518字节),您可能需要这样的东西:

skb = alloc_skb(1536, GFP_KERNEL);

分配一个sk_buff结构和一个1536字节的相关缓冲区。实际的缓冲区位于“skb-> data”。

答案 1 :(得分:0)

sizeof(struct sk_buff)

或者你正在使用指向sk_buff的指针

sizeof(struct sk_buff)