From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/inc/sys/stropts.h | 236 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 private/inc/sys/stropts.h (limited to 'private/inc/sys/stropts.h') diff --git a/private/inc/sys/stropts.h b/private/inc/sys/stropts.h new file mode 100644 index 000000000..12ab512f3 --- /dev/null +++ b/private/inc/sys/stropts.h @@ -0,0 +1,236 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + stropts.h + +Abstract: + + This module defines the STREAMS ioctl message interface. + +Author: + + Eric Chin (ericc) July 18, 1991 + +Revision History: + +--*/ + +/* + * Streams ioctl message interface + * + * @(#)stropts.h 1.19 (Spider) 91/11/27 + */ + +#ifndef _SYS_STROPTS_ +#define _SYS_STROPTS_ + + +/* + * Read options + */ + +#define RNORM 0x00 /* Normal - bytes stream */ +#define RMSGD 0x01 /* Message, non-discard mode */ +#define RMSGN 0x02 /* Message, discard mode */ + +#define RMASK 0x0F /* mask for read options */ + +/* + * Protocol read options + */ + +#define RPROTNORM 0x00 /* Fail reads with EBADMSG */ +#define RPROTDIS 0x10 /* Discard proto part */ +#define RPROTDAT 0x20 /* Turn proto part into data */ + +#define RPROTMASK 0xF0 /* mask for protocol read options */ + +/* + * Values for I_ATMARK argument + */ + +#define ANYMARK 0 /* check if message is marked */ +#define LASTMARK 1 /* check if last one marked */ + +/* + * Value for I_SWROPT argument + */ + +#define NOSNDZERO 0 /* disallow zero length sends */ +#define SNDZERO 1 /* permit zero length sends */ + +/* + * STREAMS ioctl defines + */ + +#define STR ('S'<<8) +#define I_NREAD (STR|1) +#define I_PUSH (STR|2) +#define I_POP (STR|3) +#define I_LOOK (STR|4) +#define I_FLUSH (STR|5) +#define I_SRDOPT (STR|6) +#define I_GRDOPT (STR|7) +#define I_STR (STR|8) +#define I_SETSIG (STR|9) +#define I_GETSIG (STR|10) +#define I_FIND (STR|11) +#define I_LINK (STR|12) +#define I_UNLINK (STR|13) +#define I_PEEK (STR|15) +#define I_FDINSERT (STR|16) +#define I_SENDFD (STR|17) +#define I_RECVFD (STR|18) +#ifdef SVR2 +#define I_GETMSG (STR|19) +#define I_PUTMSG (STR|20) +#define I_GETID (STR|21) +#define I_POLL (STR|22) +#endif /*SVR2*/ +#define I_SWROPT (STR|23) +#define I_GWROPT (STR|24) +#define I_LIST (STR|25) +#define I_ATMARK (STR|26) +#define I_SETCLTIME (STR|27) +#define I_GETCLTIME (STR|28) +#define I_PLINK (STR|29) +#define I_PUNLINK (STR|30) +#define I_DEBUG (STR|31) +#define I_CLOSE (STR|32) + + +#define MUXID_ALL -1 + + +/* + * General buffer structure (putmsg, getmsg, etc) + */ + +struct strbuf { + int maxlen; /* no. of bytes in buffer */ + int len; /* no. of bytes returned */ + char *buf; /* pointer to data */ +}; + +/* + * General ioctl + */ + +struct strioctl { + int ic_cmd; /* command */ + int ic_timout; /* timeout value */ + int ic_len; /* length of data */ + char *ic_dp; /* pointer to data */ +}; + +/* + * Structure for I_FDINSERT ioctl + */ + +struct strfdinsert { + struct strbuf ctlbuf; + struct strbuf databuf; + long flags; + HANDLE fildes; + int offset; +}; + + +/* + * Structures for I_DEBUG ioctl + */ +typedef enum _str_trace_options { + MSG_TRACE_PRINT = 0x00000001, + MSG_TRACE_FLUSH = 0x00000002, + MSG_TRACE_ON = 0x00000004, + MSG_TRACE_OFF = 0x00000008, + POOL_TRACE_PRINT = 0x00000010, + POOL_TRACE_FLUSH = 0x00000020, + POOL_TRACE_ON = 0x00000040, + POOL_TRACE_OFF = 0x00000080, + POOL_FAIL_ON = 0x00000100, + POOL_FAIL_OFF = 0x00000200, + LOCK_TRACE_ON = 0x00000400, + LOCK_TRACE_OFF = 0x00000800, + QUEUE_PRINT = 0x00001000, + BUFFER_PRINT = 0x00002000, + POOL_LOGGING_ON = 0x00004000, + POOL_LOGGING_OFF = 0x00008000 +} str_trace_options; + + +struct strdebug { + ULONG trace_cmd; +}; + + +/* + * stream I_PEEK ioctl format + */ + +struct strpeek { + struct strbuf ctlbuf; + struct strbuf databuf; + long flags; +}; + +/* + * receive file descriptor structure + */ +struct strrecvfd { +#ifdef INKERNEL + union { + struct file *fp; + int fd; + } f; +#else + int fd; +#endif + unsigned short uid; + unsigned short gid; + char fill[8]; +}; + +#define FMNAMESZ 8 + +struct str_mlist { + char l_name[FMNAMESZ+1]; +}; + +struct str_list { + int sl_nmods; + struct str_mlist *sl_modlist; +}; + +/* + * get/putmsg flags + */ + +#define RS_HIPRI 1 /* High priority message */ + +#define MORECTL 1 +#define MOREDATA 2 + + +/* + * M_SETSIG flags + */ + +#define S_INPUT 1 +#define S_HIPRI 2 +#define S_OUTPUT 4 +#define S_MSG 8 +#define S_ERROR 16 +#define S_HANGUP 32 + +/* + * Flags for MFLUSH messages + */ +#define FLUSHW 01 /* flush downstream */ +#define FLUSHR 02 /* flush upstream */ +#define FLUSHRW (FLUSHR | FLUSHW) + +#endif /* _SYS_STROPTS_ */ -- cgit v1.2.3