先列源码
-
static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
-
{
-
unsigned char *tmp = skb_tail_pointer(skb);
-
SKB_LINEAR_ASSERT(skb);
-
skb->tail += len;
-
skb->len += len;
-
return tmp;
-
}
__skb_put的作用:
保存当前的tail地址,然后将tail指针向后移动len字节,同时把skb的长度增加len。最后返回开始时的尾部地址。这个就可以把数据拷贝到skb里面啦。
请参考下面的使用方法。
-
memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long)));
这是fm10k的收包处理函数,将内存中地址va的数据拷贝到skb中。
阅读(3081) | 评论(0) | 转发(0) |