更新时间:2018-12-27 18:14:17
封面
版权信息
前言
第1章 概述
1.1 Linux内核组件
1.2 Linux内核中的活动
1.2.1 进程和系统调用
1.2.2 硬件中断
1.2.3 tasklet
1.2.4 workqueue
1.2.5 软件中断
1.3 互斥机制
1.3.1 spin lock
1.3.2 读-写spin lock
1.3.3 读-复制-更新(Read-Copy-Update,RCU)
1.4 内核模块(module)
1.4.1 管理内核模块
1.4.2 自动装载模块
1.4.3 模块功能的注册和取消
1.4.4 在模块装载时给模块传递参数
1.4.5 内核和模块的符号表
1.5 内存资源
1.5.1 高速缓冲区(memory cache)
1.5.2 高速缓存和哈希链表
1.6 时间管理
1.7 嵌入式的挑战
1.8 本章总结
第2章Linux网络包传输的关键数据结构——Socket Buffer
2.1 Socket Buffer设计概述
2.1.1 Socket Buffer与TCP/IP协议栈
2.1.2 Socket Buffer的对外接口
2.1.3 Socket Buffer的特点
2.2 Socket Buffer的构成
2.2.1 Socket Buffer的基本组成
2.2.2 Socket Buffer穿越TCP/IP协议栈
2.3 sk_buff数据域的设计和含义
2.3.1 sk_buff中的结构管理域
2.3.2 常规数据域
2.3.3 sk_buff的网络功能配置域
2.4 操作sk_buff的函数
2.4.1 创建和释放Socket Buffer
2.4.2 数据空间的预留和对齐
2.4.3 复制和克隆
2.4.4 操作队列的函数
2.4.5 引用计数的操作
2.4.6 协议头指针操作
2.5 数据分片和分段
2.5.1 为什么要分割数据包
2.5.2 设计skb_shared_info数据结构的目的
2.5.3 操作skb_shared_info的函数
2.6 本章总结
第3章 网络设备在内核中的抽象——struct net_device数据结构
3.1 协议栈与网络设备
3.1.1 协议栈软件与网络设备硬件之间的接口
3.1.2 设备独立接口文件dev.c
3.1.3 设备驱动程序
3.1.4 struct net_device数据结构
3.2 struct net_device数据结构
3.2.1 struct net_device数据结构的数据域
3.2.2 struct net_device数据结构的其他数据域
3.3 struct net_device数据结构中数据域的功能分类
3.3.1 设备管理域
3.3.2 设备配置管理域
3.3.3 设备状态
3.3.4 统计
3.3.5 设备链表
3.3.6 链路层组传送
3.3.7 流量管理
3.3.8 常规域
3.3.9 操作函数结构
3.4 函数指针
3.4.1 设备初始化
3.4.2 传送
3.4.3 硬件协议头
3.4.4 网络统计状态
3.4.5 修改配置
3.5 本章总结
第4章 网络设备在Linux内核中识别
4.1 内核初始化的特点
4.1.1 命令行参数
4.1.2 网络子系统的命令行参数
4.2 内核启动过程
4.2.1 用do_initcall函数完成的初始化
4.2.2 标记初始化函数的宏
4.2.3 网络子系统初始化
4.2.4 网络设备的初始化
4.3 网络设备的注册和struct net_device数据结构实例的初始化
4.3.1 初始化函数的任务
4.3.2 网络设备的注册和注销
4.3.3 网络设备的引用计数(reference count)
4.3.4 允许和禁止网络设备
4.4 网络设备的管理
4.4.1 管理网络设备的链表
4.4.2 网络设备的搜索函数
4.5 事件通知链
4.5.1 事件通知链构成
4.5.2 注册回调函数到事件通知链
4.5.3 通知子系统有事件发生
4.5.4 网络子系统中的事件通知链
4.5.5 网络子系统传送的事件