STREAMS-UX Programmer's Guide (February 2007)

Modules and Drivers
STREAMS Driver
Chapter 4
99
DRV_CHAR | DRV_PSEUDO | DRV_MP_SAFE, /* Driver flags */
-1, /* Block Major number */
-1, /* Character Major number */
NULL, NULL, NULL /* cdio, gio_private, cdio_private */
}
static drv_ops_t test_drv_ops = {
NULL, /* d_open */
NULL, /* d_close */
NULL, /* d_strategy */
NULL, /* d_dump */
NULL, /* d_psize */
NULL, /* d_mount */
NULL, /* d_read */
NULL, /* d_write */
NULL, /* d_ioctl */
NULL, /* d_select */
NULL, /* d_option1 */
NULL, NULL, NULL, NULL, /* reserved entry points */
NULL /* d_flags */
};
static streams_info_t drv_str_info = {
"drv", /* Module name */
-1, /* major no */
{ &drv_rinit, &drv_winit, NULL, NULL }, /* streamtab */
STR_IS_DEVICE | MGR_IS_MP | STR_SYSV4_OPEN, /* streams flags */
SQLVL_QUEUEPAIR, /* sync level */
"", /* elsewhere sync name */
};
struct streamtab drvinfo = {
&drv_rinit,
&drv_winit
};
NOTE Unlike a module, when a value of -1 is specified as a major number in a drivers
streams_info_t struct, STREAMS assigns a unique major number when the driver gets
installed on a system.