第一部分 应用程序编程接口 1
1 “流”的概述 1
1.1 什么是“流” 1
1.2“流”的定义 2
1.3何时使用“流” 4
1.4“流”如何工作---应用程序接口 4
1.5流如何工作---内核级 6
1.6“流”操作 11
2 “流”应用级组件 14
2.1 流接口 14
2.2 打开“流”设备文件 15
2.3排队 16
2.4加入和移去模块 16
2.5 关闭流 16
2.6 流结构的例子 17
3“流”应用级机制 21
3.1 消息句柄 21
3.2 消息排队和优先级 22
3.3输入和输出轮询 29
3.4 信号 33
3.5 作为控制终端的流 34
4.2 模块和驱动器ioctl(2) 37
4.1 常用系统调用 37
4 流驱动器和模块接口 37
4.3其他ioctl(2)命令 42
4.4刷新操作 43
5 “流”管理 44
5.1 常用工具 44
5.2 自动推入工具 44
5.3 管理工具描述 46
6 管道和队列 48
6.1 管道和FIFO概述 48
6.2 创建和打开管道及FIFO 48
7.1 内核空间的“流”概述 54
7.2 流头 54
7 流”框架--内核级 54
第二部分 内核接口 54
7.3 内核级消息 55
8 消息-内核级 78
8.1 ioctl(2)处理 78
8.2 消息分配和释放 78
8.3 扩展的“流”缓冲区 83
8.4 普通ioctl(2)处理 86
8.5 M_COPYOUT型消息示例 96
8.6 冲刷处理(FLUSH HANDLING) 106
8.7著名的ioctl接口 119
8.8信号 120
9.1 流设备驱动器 121
9流驱动器 121
9.2 有关流驱动器的几个问题 122
9.3小结 155
9.4 一些常见问题的答复 155
10 模块 156
10.1 模块概述 156
10.2 流控制 162
10.3设计指南 165
10.4 常见问题解答 165
11.1 配置“流”驱动程序和模块 166
11 配置 166
11.2 入口点 169
11.3 可调整参数 176
11.4 应用程序接口 177
12 多线程“流” 178
12.1 多线程(MT:MultiThreaded)“流”介绍 178
12.2 MT “流”框架(framework) 178
12.3 准备移植 180
12.4 MT SAFE模块 182
12.5 使用明确锁机制的MT SAFE模块 186
12.6 多线程设备驱动程序例子 187
12.7 带有外部周边的多线程模块例子 195
13.1 多路复用概述 202
13 多路复用(多路传输) 202
13.2 连接/切断低级流 207
13.3 多路复用器构造举例 209
13.4 多路复用驱动器 209
13.5 持续的链接 218
13.6 设计指南 220
第三部分 高级主题 221
14 基于“流”的终端子系统 221
14.1 终端子系统概述 221
14.2 基于“流”的伪终端子系统 228
15.2 内核调试信息输出 236
15 调试 236
15.1 调试程序概述 236
15.3 “流”错误记录 237
15.4 内核检测工具 237
A 消息类型 239
A.1 概述 239
A.2 高优先级消息 246
B “流”实用程序 253
B.1内核实用程序接口概要 253
C “流”常见问题解答(FAQ) 255
词汇表 257