Chinaunix首页 | 论坛 | 博客
  • 博客访问: 554411
  • 博文数量: 117
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 359
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 21:58
个人简介

爱上香烟

文章分类

全部博文(117)

文章存档

2018年(3)

2017年(8)

2016年(65)

2015年(41)

我的朋友

分类: LINUX

2016-05-27 20:10:58

转载:
3.4.7  添加或删除尾部数据

1.skb_add_data()

skb_add_data()将指定用户空间的数据添加到SKB的数据缓存区的尾部,操作过程如图3-22所示。如果成功则返回0,否则返回相应的错误码。参数skb为待添加数据的SKB;from为待添加的数据源,指向在用户空间的存储缓存区;copy为待添加数据的长度。

 
图3-22  skb_add_data()示意
a) 操作前  b) 操作后

2.skb_trim()

skb_trim()根据指定长度删除SKB的数据缓存区尾部的数据,如果新长度大于当前长度,则不作处理,操作过程如图3-23所示。调用该函数的前提条件是,待操作的SKB的数据必须是线性存储的。参数skb为待操作的SKB;len为删除尾部数据后剩余的长度。

 
图3-23  skb_trim()示意
a) 操作前  b) 操作后

3.pskb_trim()

pskb_trim()与skb_trim()功能类似,也是根据指定长度删除SKB尾部的数据。不同的是,pskb_trim()是skb_trim()的功能超集,不仅可以处理线性数据的SKB,还可以处理非线性的SKB。线性数据的处理过程与skb_trim()相同,非线性数据操作过程如图3-24 和图3-25所示。

 
图3-24  pskb_trim()示意--操作前
 
图3-25  pskb_trim()示意--操作后

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