STREAMS-UX Programmer's Guide (February 2007)

5
Contents
Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
STREAMS Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Flow Control in Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Sample Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Module Specific Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
STREAMS Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Overview of Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Writing Drivers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Major and Minor Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Cloning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Flow Control in Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Sample Driver Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Driver Specific Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
DLKM STREAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5. Multiplexing
Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Building and Dismantling Multiplexors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
To Build a Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
To Dismantle a Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Routing Data through a Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Connecting and Disconnecting Multiplexor Configurations . . . . . . . . . . . . . . . . . . . . 126
To Create a Multiplexor Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
To Disconnect a Multiplexor Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Characteristics of Multiplexing Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Persistent Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Creating Persistent Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Dismantling Persistent Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Characteristics of Persistent Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
STREAMS Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Ioctl Processing in a Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Flush Handling in a Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Flow Control in a Multiplexor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
A Sample Multiplexing Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Service Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Multiplexor Specific Design Guidelines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150