linux内核网络--skb_shared_info结构和skb_shinfo函数“每日读书”

2024-04-09 01:20

本文主要是介绍linux内核网络--skb_shared_info结构和skb_shinfo函数“每日读书”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如图2-5所示,数据缓冲区尾端有个名为skb_shared_info的数据结构,用以保持此数据区块的附加信息,此数据结构紧接在标记数据尾端的end指针之后,此数据结构的定义如下,

struct skb_shared_info {

    atomic_t dataref;

    unsigned int nr_frags;

    unsigned short tso_size;

    unsigned short tso_segs;

    struct sk_buff *frag_list;

    skb_frag_t frags[MAX_SKB_FRAGS];

};

dataref 代表数据块用户数目, 下一节缓冲区克隆拷贝会对此予以描述nr_frags, frag_list以及frags 用于处理IP片段二十一章对此予以描述skb_is_nonlinear 函数用于检查缓冲区是否片段skb_linearize 可以用于几个片段合压一个均一single flat缓冲区合压几个片段引发拷贝因为使性能下降

有些网络接口network interface card, NIC 可以采用硬件处理一些传统CPU所做任务最常见例子就是L3L4校验和计算有些NIC甚至可以维护L4协议状态在这里给出这段代码原因在于我们感兴趣TCP节段写在TCP segementaion offload ,TSO NIC这里实现了TCP子集功能会用到tso_sizetso_segs/

注意sk_buff 结构中没有指向skb_shared_info数据结构字段为了访问结构函数必须使用返回end 指针skb_shinfo

#define skb_shinfo (SKB) ((struct skb_shared_info*))((SKB)->end)

例如如下语句显示如何用于增加私有一个字段

skb_shinfo(skb)->wr_frags++;

这篇关于linux内核网络--skb_shared_info结构和skb_shinfo函数“每日读书”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/886856

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l