构建 STREAMS
本部分描述了构建 STREAMS 的过程。
在第一个 open 子例程上创建到与 STREAMS 驱动程序对应的字符特殊文件的流。
流通常分两步构建。 步骤 1 创建仅由流头 (请参阅 流头) 和设备驱动程序组成的最小流,步骤 2 添加模块以生成扩展流 (请参阅 扩展流) ,如流设置图 (图 1) 中所示。 可以添加到流的模块称为可推送模块 (请参阅 可推送模块)。

构建流的第一步有三个部分:
- 分配和初始化头和驱动程序结构。
- 将头和尾中的模块相互链接,形成一个流。
- 调用驱动程序打开例程。
如果驱动程序执行所需的所有字符和设备处理,那么无需将任何模块添加到流中。 STREAMS 驱动程序的示例包括原始 tty 驱动程序 (一个传递输入字符而不进行更改的驱动程序) 和一个具有多个向其打开的流 (对应于向字符设备驱动程序打开的多个次要设备) 的驱动程序。
当驱动程序从设备接收字符时,它会将它们放入消息中。 然后将消息传输到下一个流组件 (流头) ,该流组件将抽取消息内容并将其复制到用户空间。 对下游字符输出进行类似处理; 流头将数据从用户空间复制到消息并将其发送到驱动程序。