云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > SK - BUFF学习笔记

SK - BUFF学习笔记

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 1:13:49

这个分片结构体和sk_buff结构的数据区是一体的,所以在各种操作时都把他们两个结构看做是一个来操作。比如:为sk_buff结构的数据区申请和释放空间时,分片结构也会跟着该数据区一起分配和释放。而克隆时,sk_buff的数据区和分片结构都由分片结构中的 dataref 成员字段来标识是否被引用。

下面来看下sk_buff结构的数据区和分片结构的关系图:

从上图也可以看出来分片结构和sk_buff的数据区连在一起,end指针的下个字节就是分片结构的开始位置。那访问分片结构时,可以直接用end指针作为这个分片结构体的开始(记得要强转成分片结构体)或者用内核定义好的宏:

#define skb_shinfo(SKB) ((struct skb_shared_info *)((SKB)->end)) 去访问也可以,其本质也是返回个sk_buff的end指针。

分片结构体的数据区:

在讲分片结构时,谈到其中有个成员字段非常重要:skb_frag_t

frags[MAX_SKB_FRAGS]; 其实这就和分片结构的数据区有关。下面来讲下这个数字中的元素结构体:

typedef struct skb_frag_struct skb_frag_t; struct skb_frag_struct { };

struct page *page; // 指向分片数据区的指针,类似于sk_buff__u32 page_offset; // 偏移量,表示从page指针指向的地方,偏__u32 size; // 数据区的长度,即:sk_buff结构中的data_len 中的data指针 移page_offset

还是请看下面的两幅图:

上面这幅图是用数组存储的分片数据区指针的,这是一种分片数据类型。下面看另外一种用frag_list指针来指向的分片数据类型:

对于sk_buff结构体及相关结构体就分析这些吧,这是对sk_buff结构体的一个全面透彻的分析,后面还会研究下sk_buff结构相关的操作函数。

摘自:http://blog.csdn.net/yuzhihui_no1/article/details/38666589

搜索更多关于: SK - BUFF学习笔记 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

这个分片结构体和sk_buff结构的数据区是一体的,所以在各种操作时都把他们两个结构看做是一个来操作。比如:为sk_buff结构的数据区申请和释放空间时,分片结构也会跟着该数据区一起分配和释放。而克隆时,sk_buff的数据区和分片结构都由分片结构中的 dataref 成员字段来标识是否被引用。 下面来看下sk_buff结构的数据区和分片结构的关系图: 从上图也可以看出来分片结构和sk_buff的数据区连在一起,end指针的下个字节就是分片结构的开始位置。那访问分片结构时,可以直接用end指针作为这个分片结构体的开始(记得要强转成分片结构体)或者用内核定义好的宏:#define skb_shinfo(SKB) ((struc

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com