STREAMS Table-Driven Entry Points

In non-STREAMS drivers, most of the driver's work is accomplished through the
entry points in the cb_ops(9S) structure.
For STREAMS drivers, most of the work is accomplished through the message-based STREAMS
queue processing entry points.

Figure 9–1 shows multiple streams (corresponding to minor devices) connecting to a common
driver. There are two distinct streams opened from the same major device. Consequently,
they have the same streamtab and the same driver procedures.

Figure 9–1 Device Driver Streams

Multiple instances (minor devices) of the same driver are handled during the
initial open for each device. Typically, a driver stores the queue
address in a driver-private structure that is uniquely identified by the minor device
number. (The DDI/DKI provides a mechanism for uniform handling of driver-private structures;
see ddi_soft_state(9F)). The q_ptr of the queue points to the private data structure entry. When the
messages are received by the queue, the calls to the driver put and service procedures pass the address of the queue, enabling the procedures
to determine the associated device through the q_ptr field.

STREAMS guarantees that only one open or close can
be active at a time per major/minor device pair.