1#pragma once 2 3#ifdef __cplusplus 4extern "C" { 5#endif 6 7#define __SID ('S' << 8) 8 9#define I_NREAD (__SID | 1) 10#define I_PUSH (__SID | 2) 11#define I_POP (__SID | 3) 12#define I_LOOK (__SID | 4) 13#define I_FLUSH (__SID | 5) 14#define I_SRDOPT (__SID | 6) 15#define I_GRDOPT (__SID | 7) 16#define I_STR (__SID | 8) 17#define I_SETSIG (__SID | 9) 18#define I_GETSIG (__SID | 10) 19#define I_FIND (__SID | 11) 20#define I_LINK (__SID | 12) 21#define I_UNLINK (__SID | 13) 22#define I_PEEK (__SID | 15) 23#define I_FDINSERT (__SID | 16) 24#define I_SENDFD (__SID | 17) 25#define I_RECVFD (__SID | 14) 26#define I_SWROPT (__SID | 19) 27#define I_GWROPT (__SID | 20) 28#define I_LIST (__SID | 21) 29#define I_PLINK (__SID | 22) 30#define I_PUNLINK (__SID | 23) 31#define I_FLUSHBAND (__SID | 28) 32#define I_CKBAND (__SID | 29) 33#define I_GETBAND (__SID | 30) 34#define I_ATMARK (__SID | 31) 35#define I_SETCLTIME (__SID | 32) 36#define I_GETCLTIME (__SID | 33) 37#define I_CANPUT (__SID | 34) 38 39#define FMNAMESZ 8 40 41#define FLUSHR 0x01 42#define FLUSHW 0x02 43#define FLUSHRW 0x03 44#define FLUSHBAND 0x04 45 46#define S_INPUT 0x0001 47#define S_HIPRI 0x0002 48#define S_OUTPUT 0x0004 49#define S_MSG 0x0008 50#define S_ERROR 0x0010 51#define S_HANGUP 0x0020 52#define S_RDNORM 0x0040 53#define S_WRNORM S_OUTPUT 54#define S_RDBAND 0x0080 55#define S_WRBAND 0x0100 56#define S_BANDURG 0x0200 57 58#define RS_HIPRI 0x01 59 60#define RNORM 0x0000 61#define RMSGD 0x0001 62#define RMSGN 0x0002 63#define RPROTDAT 0x0004 64#define RPROTDIS 0x0008 65#define RPROTNORM 0x0010 66#define RPROTMASK 0x001C 67 68#define SNDZERO 0x001 69#define SNDPIPE 0x002 70 71#define ANYMARK 0x01 72#define LASTMARK 0x02 73 74#define MUXID_ALL (-1) 75 76#define MSG_HIPRI 0x01 77#define MSG_ANY 0x02 78#define MSG_BAND 0x04 79 80#define MORECTL 1 81#define MOREDATA 2 82 83struct bandinfo { 84 unsigned char bi_pri; 85 int bi_flag; 86}; 87 88struct strbuf { 89 int maxlen; 90 int len; 91 char* buf; 92}; 93 94struct strpeek { 95 struct strbuf ctlbuf; 96 struct strbuf databuf; 97 unsigned flags; 98}; 99 100struct strfdinsert { 101 struct strbuf ctlbuf; 102 struct strbuf databuf; 103 unsigned flags; 104 int fildes; 105 int offset; 106}; 107 108struct strioctl { 109 int ic_cmd; 110 int ic_timout; 111 int ic_len; 112 char* ic_dp; 113}; 114 115struct strrecvfd { 116 int fd; 117 int uid; 118 int gid; 119 char __fill[8]; 120}; 121 122struct str_mlist { 123 char l_name[FMNAMESZ + 1]; 124}; 125 126struct str_list { 127 int sl_nmods; 128 struct str_mlist* sl_modlist; 129}; 130 131int isastream(int); 132int ioctl(int, int, ...); 133 134#ifdef __cplusplus 135} 136#endif 137