Add generated pcidevs files. Fix a small typo in devlist2h.awk.
[dragonfly.git] / sys / emulation / svr4 / svr4_stropts.h
1 /*
2  * Copyright (c) 1998 Mark Newton
3  * Copyright (c) 1994 Christos Zoulas
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  * 
28  * $FreeBSD: src/sys/svr4/svr4_stropts.h,v 1.3 1999/08/28 00:51:24 peter Exp $
29  * $DragonFly: src/sys/emulation/svr4/Attic/svr4_stropts.h,v 1.3 2003/08/27 06:07:10 rob Exp $
30  */
31
32 #ifndef _SVR4_STROPTS_H_
33 #define _SVR4_STROPTS_H_
34
35
36 struct svr4_strbuf {
37         int      maxlen;
38         int      len;
39         char    *buf;
40 };
41
42 #define SVR4_STR             ('S' << 8)
43 #define SVR4_I_NREAD         (SVR4_STR| 1)
44 #define SVR4_I_PUSH          (SVR4_STR| 2)
45 #define SVR4_I_POP           (SVR4_STR| 3)
46 #define SVR4_I_LOOK          (SVR4_STR| 4)
47 #define SVR4_I_FLUSH         (SVR4_STR| 5)
48 #define SVR4_I_SRDOPT        (SVR4_STR| 6)
49 #define SVR4_I_GRDOPT        (SVR4_STR| 7)
50 #define SVR4_I_STR           (SVR4_STR| 8)
51 #define SVR4_I_SETSIG        (SVR4_STR| 9)
52 #define SVR4_I_GETSIG        (SVR4_STR|10)
53 #define SVR4_I_FIND          (SVR4_STR|11)
54 #define SVR4_I_LINK          (SVR4_STR|12)
55 #define SVR4_I_UNLINK        (SVR4_STR|13)
56 #define SVR4_I_ERECVFD       (SVR4_STR|14)
57 #define SVR4_I_PEEK          (SVR4_STR|15)
58 #define SVR4_I_FDINSERT      (SVR4_STR|16)
59 #define SVR4_I_SENDFD        (SVR4_STR|17)
60 #define SVR4_I_RECVFD        (SVR4_STR|18)
61 #define SVR4_I_SWROPT        (SVR4_STR|19)
62 #define SVR4_I_GWROPT        (SVR4_STR|20)
63 #define SVR4_I_LIST          (SVR4_STR|21)
64 #define SVR4_I_PLINK         (SVR4_STR|22)
65 #define SVR4_I_PUNLINK       (SVR4_STR|23)
66 #define SVR4_I_SETEV         (SVR4_STR|24)
67 #define SVR4_I_GETEV         (SVR4_STR|25)
68 #define SVR4_I_STREV         (SVR4_STR|26)
69 #define SVR4_I_UNSTREV       (SVR4_STR|27)
70 #define SVR4_I_FLUSHBAND     (SVR4_STR|28)
71 #define SVR4_I_CKBAND        (SVR4_STR|29)
72 #define SVR4_I_GETBAND       (SVR4_STR|30)
73 #define SVR4_I_ATMARK        (SVR4_STR|31)
74 #define SVR4_I_SETCLTIME     (SVR4_STR|32)
75 #define SVR4_I_GETCLTIME     (SVR4_STR|33)
76 #define SVR4_I_CANPUT        (SVR4_STR|34)
77
78 /*
79  * The following two ioctls are OS specific and
80  * undocumented.
81  */
82 #define SVR4__I_BIND_RSVD    (SVR4_STR|242)
83 #define SVR4__I_RELE_RSVD    (SVR4_STR|243)
84
85 /*
86  * Service type definitions
87  */
88 #define SVR4_T_COTS           1   /* Connection-orieted */
89 #define SVR4_T_COTS_ORD       2   /* Local connection-oriented */
90 #define SVR4_T_CLTS           3   /* Connectionless */
91
92 /* Struct passed for SVR4_I_STR */
93 struct svr4_strioctl {
94         u_long   cmd;
95         int      timeout;
96         int      len;
97         char    *buf;
98 };
99
100 /*
101  * Bits for I_{G,S}ETSIG
102  */
103 #define SVR4_S_INPUT    0x0001          /* any message on read queue no HIPRI */
104 #define SVR4_S_HIPRI    0x0002          /* high prio message on read queue */
105 #define SVR4_S_OUTPUT   0x0004          /* write queue has free space */
106 #define SVR4_S_MSG      0x0008          /* signal message in read queue head */
107 #define SVR4_S_ERROR    0x0010          /* error message in read queue head */
108 #define SVR4_S_HANGUP   0x0020          /* hangup message in read queue head */
109 #define SVR4_S_RDNORM   0x0040          /* normal message on read queue */
110 #define SVR4_S_WRNORM   S_OUTPUT        /* write queue has free space */
111 #define SVR4_S_RDBAND   0x0080          /* out of band message on read queue */
112 #define SVR4_S_WRBAND   0x0100          /* write queue has free space for oob */
113 #define SVR4_S_BANDURG  0x0200          /* generate SIGURG instead of SIGPOLL */
114 #define SVR4_S_ALLMASK  0x03ff          /* all events mask */
115
116 /*
117  * Our internal state for the stream
118  * For now we keep almost nothing... In the future we can keep more
119  * streams state.
120  */
121 struct svr4_strm {
122         int     s_family;       /* socket family */
123         int     s_cmd;          /* last getmsg reply or putmsg request  */
124         int     s_afd;          /* last accepted fd; [for fd_insert]    */
125         int     s_eventmask;    /* state info from I_SETSIG et al */
126 };
127
128 /*
129  * The following structures are determined empirically.
130  */
131 struct svr4_strmcmd {
132         long    cmd;            /* command ?            */
133         long    len;            /* Address len          */
134         long    offs;           /* Address offset       */
135         long    pad[61];
136 };
137
138 struct svr4_infocmd {
139         long    cmd;
140         long    tsdu;
141         long    etsdu;
142         long    cdata;
143         long    ddata;
144         long    addr;
145         long    opt;
146         long    tidu;
147         long    serv;
148         long    current;
149         long    provider;
150 };
151
152 struct svr4_strfdinsert {
153         struct svr4_strbuf      ctl;
154         struct svr4_strbuf      data;
155         long                    flags;
156         int                     fd;
157         int                     offset;
158 };
159
160 struct svr4_netaddr_in {
161         u_short family;
162         u_short port;
163         u_long  addr;
164 };
165
166 struct svr4_netaddr_un {
167         u_short family;
168         char    path[1];
169 };
170
171 #define SVR4_ADDROF(sc) (void *) (((char *) (sc)) + (sc)->offs)
172 #define SVR4_C_ADDROF(sc) (const void *) (((const char *) (sc)) + (sc)->offs)
173
174 struct svr4_strm *svr4_stream_get (struct file *fp);
175
176 #endif /* !_SVR4_STROPTS */