1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
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_ */
|