STREAMS-UX Programmer's Guide (February 2007)

Multiplexing
STREAMS Multiplexor
Chapter 5
125
A Sample Multiplexing Driver
This section contains an example of a STREAMS multiplexing driver that implements an N-to-1
configuration.
Multiplexor Declaration
/* Sample Multiplexor inclusions */
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/stream.h>
#include <sys/stropts.h>
/* data structures for a STREAMS multiplexing driver */
int mux_open __((queue_t *, dev_t *, int, int, cred_t *));
int mux_close __((queue_t *, int, cred_t *));
/* Upper read procedures */
int mux_ursrv __((queue_t * q));
/* Upper write procedures */
int mux_uwput __((queue_t * q, mblk_t *));
int mux_uwsrv __((queue_t * q));
/* lower read procedures */
int mux_lrput __((queue_t * q, mblk_t *));
int mux_lrsrv __((queue_t * q));
/* lower write procedures */
int mux_lwsrv __((queue_t * q));
#define MOD_ID 0
static struct module_info minfo = {
MOD_ID, "MUX", 0, INFPSZ, 65536, 1024
};
static struct qinit mux_urinit = { /* upper read */
NULL, mux_ursrv, mux_open, mux_close, NULL, &minfo
};