Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96269
  • 博文数量: 17
  • 博客积分: 37
  • 博客等级: 民兵
  • 技术积分: 217
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-09 18:24
文章分类
文章存档

2016年(4)

2015年(3)

2014年(9)

2011年(1)

我的朋友

分类: C/C++

2016-06-29 19:33:58

先列源码

点击(此处)折叠或打开

  1. static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
  2. {
  3.         unsigned char *tmp = skb_tail_pointer(skb);
  4.         SKB_LINEAR_ASSERT(skb);
  5.         skb->tail += len;
  6.         skb->len += len;
  7.         return tmp;
  8. }
__skb_put的作用:
保存当前的tail地址,然后将tail指针向后移动len字节,同时把skb的长度增加len。最后返回开始时的尾部地址。这个就可以把数据拷贝到skb里面啦。
请参考下面的使用方法。

点击(此处)折叠或打开

  1. memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long)));
这是fm10k的收包处理函数,将内存中地址va的数据拷贝到skb中。

阅读(2955) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~