summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/ddi.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/ddi.h')
-rw-r--r--usr/src/uts/common/sys/ddi.h245
1 files changed, 245 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/ddi.h b/usr/src/uts/common/sys/ddi.h
new file mode 100644
index 0000000000..7e32333641
--- /dev/null
+++ b/usr/src/uts/common/sys/ddi.h
@@ -0,0 +1,245 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
+
+#ifndef _SYS_DDI_H
+#define _SYS_DDI_H
+
+#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.19 */
+
+#include <sys/types.h>
+#include <sys/map.h>
+#include <sys/buf.h>
+#include <sys/uio.h>
+#include <sys/stream.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * ddi.h -- the flag and function definitions needed by DDI-conforming
+ * drivers. This header file contains #undefs to undefine macros that
+ * drivers would otherwise pick up in order that function definitions
+ * may be used. Programmers should place the include of "sys/ddi.h"
+ * after any header files that define the macros #undef'ed or the code
+ * may compile incorrectly.
+ */
+
+/*
+ * define min() and max() as macros so that drivers will not pick up the
+ * min() and max() kernel functions since they do signed comparison only.
+ */
+#ifdef min
+#undef min
+#endif /* min */
+#define min(a, b) ((a) < (b) ? (a) : (b))
+
+#ifdef max
+#undef max
+#endif /* max */
+#define max(a, b) ((a) < (b) ? (b) : (a))
+
+#define TIME 1
+#define UPROCP 2
+#define PPGRP 3
+#define LBOLT 4
+#define SYSRINT 5
+#define SYSXINT 6
+#define SYSMINT 7
+#define SYSRAWC 8
+#define SYSCANC 9
+#define SYSOUTC 10
+#define PPID 11
+#define PSID 12
+#define UCRED 13
+
+#ifdef __STDC__
+extern int drv_getparm(uint_t, void *);
+extern int drv_setparm(uint_t, ulong_t);
+extern void drv_usecwait(clock_t);
+extern clock_t drv_hztousec(clock_t);
+extern clock_t drv_usectohz(clock_t);
+extern void delay(clock_t);
+extern void time_to_wait(clock_t *, clock_t);
+
+#else
+
+extern int drv_getparm();
+extern int drv_setparm();
+extern void drv_usecwait();
+extern clock_t drv_hztousec();
+extern clock_t drv_usectohz();
+extern void delay();
+extern time_to_wait();
+#endif /* __STDC__ */
+
+/* XXX -- should be changed to major_t */
+/* convert external to internal major number */
+
+#ifdef __STDC__
+extern int etoimajor(major_t);
+/* convert internal to extern major number */
+extern int itoemajor(major_t, int);
+
+#else
+
+extern int etoimajor();
+/* convert internal to extern major number */
+extern int itoemajor();
+#endif /* __STDC__ */
+
+#if defined(__STDC__)
+
+extern int drv_priv(struct cred *);
+
+#else
+
+extern int drv_priv();
+
+#endif
+
+/*
+ * The following declarations take the place of macros in
+ * sysmacros.h The undefs are for any case where a driver includes
+ * sysmacros.h, even though DDI conforming drivers must not.
+ */
+#undef getemajor
+#undef geteminor
+#undef getmajor
+#undef getminor
+#undef makedevice
+#undef cmpdev
+#undef expdev
+
+
+#ifdef __STDC__
+extern major_t getemajor(dev_t);
+extern minor_t geteminor(dev_t);
+extern major_t getmajor(dev_t);
+extern minor_t getminor(dev_t);
+extern dev_t makedevice(major_t, minor_t);
+extern o_dev_t cmpdev(dev_t);
+extern dev_t expdev(dev_t);
+#else
+extern major_t getemajor();
+extern minor_t geteminor();
+extern major_t getmajor();
+extern minor_t getminor();
+extern dev_t makedevice();
+extern o_dev_t cmpdev();
+extern dev_t expdev();
+#endif /* __STDC__ */
+
+/*
+ * The following macros from param.h are also being converted to
+ * functions and #undefs must be done here as well since param.h
+ * will be included by most if not every driver
+ */
+
+#undef btop
+#undef btopr
+#undef ptob
+
+
+#ifdef __STDC__
+extern unsigned long btop(unsigned long);
+extern unsigned long btopr(unsigned long);
+extern unsigned long ptob(unsigned long);
+#else
+extern unsigned long btop();
+extern unsigned long btopr();
+extern unsigned long ptob();
+#endif /* __STDC__ */
+
+
+/* STREAMS drivers and modules must include stream.h to pick up the */
+/* needed structure and flag definitions. As was the case with map.h, */
+/* macros used by both the kernel and drivers in times past now have */
+/* a macro definition for the kernel and a function definition for */
+/* drivers. The following #undefs allow drivers to include stream.h */
+/* but call the functions rather than macros. */
+
+#undef OTHERQ
+#undef RD
+#undef WR
+#undef SAMESTR
+#undef datamsg
+
+
+#ifdef __STDC__
+extern struct queue *OTHERQ(queue_t *); /* stream.h */
+extern struct queue *RD(queue_t *);
+extern struct queue *WR(queue_t *);
+extern int SAMESTR(queue_t *);
+extern int datamsg(unsigned char);
+
+#else
+
+extern struct queue *OTHERQ(); /* stream.h */
+extern struct queue *RD();
+extern struct queue *WR();
+extern int SAMESTR();
+extern int datamsg();
+#endif /* __STDC__ */
+
+/* declarations of functions for allocating and deallocating the space */
+/* for a buffer header (just a header, not the associated buffer) */
+
+#ifdef __STDC__
+extern struct buf *getrbuf(int);
+extern void freerbuf(struct buf *);
+#else
+extern struct buf *getrbuf();
+extern void freerbuf();
+#endif /* __STDC__ */
+
+#ifdef _KERNEL
+/*
+ * SVR4MP replacement for hat_getkpfnum()
+ */
+#define NOPAGE (-1) /* value returned for invalid addresses */
+
+typedef pfn_t ppid_t; /* a 'physical page identifier' - no math allowed! */
+
+#ifdef __STDC__
+extern ppid_t kvtoppid(caddr_t);
+#else /* __STDC__ */
+extern ppid_t kvtoppid();
+#endif /* __STDC__ */
+
+extern int qassociate(queue_t *, int);
+
+#endif /* _KERNEL */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_DDI_H */