知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

深入理解Linux内核--skbuff

发布时间:2014-09-05 14:44:39作者:知识屋

深入理解Linux内核--skbuff
 
1、 skb->users 与skb->dataref的区别 
        skb->users:当引用数目增加时,该值和skb->dataref都会增加 
        skb->dataref:当skb被clone时,只有skb->dataref会增加,而被clone的skb的skb->users=1 
2、 pskb->copy与skb->copy 
        pskb->copy:只拷贝skb数据结构,不拷贝缓冲区内容 
        skb->copy  :拷贝skb数据结构也会拷贝缓冲区内容 
3、 skb的操作函数:reverse,put,push,pull,实际上只是修改了指针,并未真正的添加或者删除数据 
        put: 移动 skb->tail, skb->tail + n, 一般作用是添加数据 
        reverse: 这个函数移动了skb->data 和skb->tail指针,主要的作用是强制对齐,经常在分配完skb后会立刻被调用 
        push: 移动 skb->data指针, skb->data - n, 一般作用是 添加协议首部 
        pull: 移动 skb->data指针, skb->data + n, 一般作用是 删除协议首部 
4、 skb 的链表操作函数 
       skb_queue_head_init: 初始化双向链表 
       skb_queue_head, skb_queue_tail: 把缓冲区分别添加到队列的头和尾 
       skb_dequeue, skb_dequeue_tail:把一个元素从队列的首部或者尾部删除 
       skb_queue_purge: 把队列变为空队列 
       skb_queue_walk:依次循环运行队列中的每个元素
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜