任何人都可以帮助我解决以下问题:
我计划在现有Linux内核中添加新协议。我怀疑的是如何在使用skb_alloc()调用
分配内存之前找出sk_buff结构大小答案 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)