3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /*
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
28 /* All Rights Reserved */
29
30
31 #ifndef _SYS_DDI_H
32 #define _SYS_DDI_H
33
34 #pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.19 */
35
36 #include <sys/types.h>
37 #include <sys/map.h>
38 #include <sys/buf.h>
39 #include <sys/uio.h>
40 #include <sys/stream.h>
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 /*
47 * ddi.h -- the flag and function definitions needed by DDI-conforming
48 * drivers. This header file contains #undefs to undefine macros that
49 * drivers would otherwise pick up in order that function definitions
50 * may be used. Programmers should place the include of "sys/ddi.h"
51 * after any header files that define the macros #undef'ed or the code
52 * may compile incorrectly.
53 */
54
55 /*
63
64 #ifdef max
65 #undef max
66 #endif /* max */
67 #define max(a, b) ((a) < (b) ? (b) : (a))
68
69 #define TIME 1
70 #define UPROCP 2
71 #define PPGRP 3
72 #define LBOLT 4
73 #define SYSRINT 5
74 #define SYSXINT 6
75 #define SYSMINT 7
76 #define SYSRAWC 8
77 #define SYSCANC 9
78 #define SYSOUTC 10
79 #define PPID 11
80 #define PSID 12
81 #define UCRED 13
82
83 #ifdef __STDC__
84 extern int drv_getparm(uint_t, void *);
85 extern int drv_setparm(uint_t, ulong_t);
86 extern void drv_usecwait(clock_t);
87 extern clock_t drv_hztousec(clock_t);
88 extern clock_t drv_usectohz(clock_t);
89 extern void delay(clock_t);
90 extern void time_to_wait(clock_t *, clock_t);
91
92 #else
93
94 extern int drv_getparm();
95 extern int drv_setparm();
96 extern void drv_usecwait();
97 extern clock_t drv_hztousec();
98 extern clock_t drv_usectohz();
99 extern void delay();
100 extern time_to_wait();
101 #endif /* __STDC__ */
102
103 /* XXX -- should be changed to major_t */
104 /* convert external to internal major number */
105
106 #ifdef __STDC__
107 extern int etoimajor(major_t);
108 /* convert internal to extern major number */
109 extern int itoemajor(major_t, int);
110
111 #else
112
113 extern int etoimajor();
114 /* convert internal to extern major number */
115 extern int itoemajor();
116 #endif /* __STDC__ */
117
118 #if defined(__STDC__)
119
120 extern int drv_priv(struct cred *);
121
122 #else
123
124 extern int drv_priv();
125
126 #endif
127
128 /*
129 * The following declarations take the place of macros in
130 * sysmacros.h The undefs are for any case where a driver includes
131 * sysmacros.h, even though DDI conforming drivers must not.
132 */
133 #undef getemajor
134 #undef geteminor
135 #undef getmajor
136 #undef getminor
137 #undef makedevice
138 #undef cmpdev
139 #undef expdev
140
141
142 #ifdef __STDC__
143 extern major_t getemajor(dev_t);
144 extern minor_t geteminor(dev_t);
145 extern major_t getmajor(dev_t);
146 extern minor_t getminor(dev_t);
147 extern dev_t makedevice(major_t, minor_t);
148 extern o_dev_t cmpdev(dev_t);
149 extern dev_t expdev(dev_t);
150 #else
151 extern major_t getemajor();
152 extern minor_t geteminor();
153 extern major_t getmajor();
154 extern minor_t getminor();
155 extern dev_t makedevice();
156 extern o_dev_t cmpdev();
157 extern dev_t expdev();
158 #endif /* __STDC__ */
159
160 /*
161 * The following macros from param.h are also being converted to
162 * functions and #undefs must be done here as well since param.h
163 * will be included by most if not every driver
164 */
165
166 #undef btop
167 #undef btopr
168 #undef ptob
169
170
171 #ifdef __STDC__
172 extern unsigned long btop(unsigned long);
173 extern unsigned long btopr(unsigned long);
174 extern unsigned long ptob(unsigned long);
175 #else
176 extern unsigned long btop();
177 extern unsigned long btopr();
178 extern unsigned long ptob();
179 #endif /* __STDC__ */
180
181
182 /* STREAMS drivers and modules must include stream.h to pick up the */
183 /* needed structure and flag definitions. As was the case with map.h, */
184 /* macros used by both the kernel and drivers in times past now have */
185 /* a macro definition for the kernel and a function definition for */
186 /* drivers. The following #undefs allow drivers to include stream.h */
187 /* but call the functions rather than macros. */
188
189 #undef OTHERQ
190 #undef RD
191 #undef WR
192 #undef SAMESTR
193 #undef datamsg
194
195
196 #ifdef __STDC__
197 extern struct queue *OTHERQ(queue_t *); /* stream.h */
198 extern struct queue *RD(queue_t *);
199 extern struct queue *WR(queue_t *);
200 extern int SAMESTR(queue_t *);
201 extern int datamsg(unsigned char);
202
203 #else
204
205 extern struct queue *OTHERQ(); /* stream.h */
206 extern struct queue *RD();
207 extern struct queue *WR();
208 extern int SAMESTR();
209 extern int datamsg();
210 #endif /* __STDC__ */
211
212 /* declarations of functions for allocating and deallocating the space */
213 /* for a buffer header (just a header, not the associated buffer) */
214
215 #ifdef __STDC__
216 extern struct buf *getrbuf(int);
217 extern void freerbuf(struct buf *);
218 #else
219 extern struct buf *getrbuf();
220 extern void freerbuf();
221 #endif /* __STDC__ */
222
223 #ifdef _KERNEL
224 /*
225 * SVR4MP replacement for hat_getkpfnum()
226 */
227 #define NOPAGE (-1) /* value returned for invalid addresses */
228
229 typedef pfn_t ppid_t; /* a 'physical page identifier' - no math allowed! */
230
231 #ifdef __STDC__
232 extern ppid_t kvtoppid(caddr_t);
233 #else /* __STDC__ */
234 extern ppid_t kvtoppid();
235 #endif /* __STDC__ */
236
237 extern int qassociate(queue_t *, int);
238
239 #endif /* _KERNEL */
240
241 #ifdef __cplusplus
242 }
243 #endif
244
245 #endif /* _SYS_DDI_H */
|
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /*
23 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24 *
25 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
27 */
28
29 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
30 /* All Rights Reserved */
31
32
33 #ifndef _SYS_DDI_H
34 #define _SYS_DDI_H
35
36 #include <sys/types.h>
37 #include <sys/map.h>
38 #include <sys/buf.h>
39 #include <sys/uio.h>
40 #include <sys/stream.h>
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 /*
47 * ddi.h -- the flag and function definitions needed by DDI-conforming
48 * drivers. This header file contains #undefs to undefine macros that
49 * drivers would otherwise pick up in order that function definitions
50 * may be used. Programmers should place the include of "sys/ddi.h"
51 * after any header files that define the macros #undef'ed or the code
52 * may compile incorrectly.
53 */
54
55 /*
63
64 #ifdef max
65 #undef max
66 #endif /* max */
67 #define max(a, b) ((a) < (b) ? (b) : (a))
68
69 #define TIME 1
70 #define UPROCP 2
71 #define PPGRP 3
72 #define LBOLT 4
73 #define SYSRINT 5
74 #define SYSXINT 6
75 #define SYSMINT 7
76 #define SYSRAWC 8
77 #define SYSCANC 9
78 #define SYSOUTC 10
79 #define PPID 11
80 #define PSID 12
81 #define UCRED 13
82
83 extern int drv_getparm(uint_t, void *);
84 extern int drv_setparm(uint_t, ulong_t);
85 extern void drv_usecwait(clock_t);
86 extern clock_t drv_hztousec(clock_t);
87 extern clock_t drv_usectohz(clock_t);
88 extern void delay(clock_t);
89 extern void time_to_wait(clock_t *, clock_t);
90
91 /* XXX -- should be changed to major_t */
92 /* convert external to internal major number */
93
94 extern int etoimajor(major_t);
95 /* convert internal to extern major number */
96 extern int itoemajor(major_t, int);
97 extern int drv_priv(struct cred *);
98
99 /*
100 * The following declarations take the place of macros in
101 * sysmacros.h The undefs are for any case where a driver includes
102 * sysmacros.h, even though DDI conforming drivers must not.
103 */
104 #undef getemajor
105 #undef geteminor
106 #undef getmajor
107 #undef getminor
108 #undef makedevice
109 #undef cmpdev
110 #undef expdev
111
112
113 extern major_t getemajor(dev_t);
114 extern minor_t geteminor(dev_t);
115 extern major_t getmajor(dev_t);
116 extern minor_t getminor(dev_t);
117 extern dev_t makedevice(major_t, minor_t);
118 extern o_dev_t cmpdev(dev_t);
119 extern dev_t expdev(dev_t);
120
121 /*
122 * The following macros from param.h are also being converted to
123 * functions and #undefs must be done here as well since param.h
124 * will be included by most if not every driver
125 */
126
127 #undef btop
128 #undef btopr
129 #undef ptob
130
131 extern unsigned long btop(unsigned long);
132 extern unsigned long btopr(unsigned long);
133 extern unsigned long ptob(unsigned long);
134
135
136 /* STREAMS drivers and modules must include stream.h to pick up the */
137 /* needed structure and flag definitions. As was the case with map.h, */
138 /* macros used by both the kernel and drivers in times past now have */
139 /* a macro definition for the kernel and a function definition for */
140 /* drivers. The following #undefs allow drivers to include stream.h */
141 /* but call the functions rather than macros. */
142
143 #undef OTHERQ
144 #undef RD
145 #undef WR
146 #undef SAMESTR
147 #undef datamsg
148
149 extern struct queue *OTHERQ(queue_t *); /* stream.h */
150 extern struct queue *RD(queue_t *);
151 extern struct queue *WR(queue_t *);
152 extern int SAMESTR(queue_t *);
153 extern int datamsg(unsigned char);
154
155 /* declarations of functions for allocating and deallocating the space */
156 /* for a buffer header (just a header, not the associated buffer) */
157
158 extern struct buf *getrbuf(int);
159 extern void freerbuf(struct buf *);
160
161 #ifdef _KERNEL
162 /*
163 * SVR4MP replacement for hat_getkpfnum()
164 */
165 #define NOPAGE (-1) /* value returned for invalid addresses */
166
167 typedef pfn_t ppid_t; /* a 'physical page identifier' - no math allowed! */
168
169 extern ppid_t kvtoppid(caddr_t);
170
171 extern int qassociate(queue_t *, int);
172
173 #endif /* _KERNEL */
174
175 #ifdef __cplusplus
176 }
177 #endif
178
179 #endif /* _SYS_DDI_H */
|