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
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.
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]
23 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
25 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
29 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
30 /* All Rights Reserved */
36 #include <sys/types.h>
40 #include <sys/stream.h>
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.
56 * define min() and max() as macros so that drivers will not pick up the
57 * min() and max() kernel functions since they do signed comparison only.
62 #define min(a, b) ((a) < (b) ? (a) : (b))
67 #define max(a, b) ((a) < (b) ? (b) : (a))
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);
91 /* XXX -- should be changed to major_t */
92 /* convert external to internal major number */
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
*);
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.
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
);
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
131 extern unsigned long btop(unsigned long);
132 extern unsigned long btopr(unsigned long);
133 extern unsigned long ptob(unsigned long);
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. */
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);
155 /* declarations of functions for allocating and deallocating the space */
156 /* for a buffer header (just a header, not the associated buffer) */
158 extern struct buf
*getrbuf(int);
159 extern void freerbuf(struct buf
*);
163 * SVR4MP replacement for hat_getkpfnum()
165 #define NOPAGE (-1) /* value returned for invalid addresses */
167 typedef pfn_t ppid_t
; /* a 'physical page identifier' - no math allowed! */
169 extern ppid_t
kvtoppid(caddr_t
);
171 extern int qassociate(queue_t
*, int);
179 #endif /* _SYS_DDI_H */