xref: /illumos-gate/usr/src/boot/sys/sys/_types.h (revision 199767f8)
1*199767f8SToomas Soome /*-
2*199767f8SToomas Soome  * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
3*199767f8SToomas Soome  * All rights reserved.
4*199767f8SToomas Soome  *
5*199767f8SToomas Soome  * Redistribution and use in source and binary forms, with or without
6*199767f8SToomas Soome  * modification, are permitted provided that the following conditions
7*199767f8SToomas Soome  * are met:
8*199767f8SToomas Soome  * 1. Redistributions of source code must retain the above copyright
9*199767f8SToomas Soome  *    notice, this list of conditions and the following disclaimer.
10*199767f8SToomas Soome  * 2. Redistributions in binary form must reproduce the above copyright
11*199767f8SToomas Soome  *    notice, this list of conditions and the following disclaimer in the
12*199767f8SToomas Soome  *    documentation and/or other materials provided with the distribution.
13*199767f8SToomas Soome  *
14*199767f8SToomas Soome  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*199767f8SToomas Soome  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*199767f8SToomas Soome  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*199767f8SToomas Soome  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*199767f8SToomas Soome  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*199767f8SToomas Soome  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*199767f8SToomas Soome  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*199767f8SToomas Soome  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*199767f8SToomas Soome  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*199767f8SToomas Soome  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*199767f8SToomas Soome  * SUCH DAMAGE.
25*199767f8SToomas Soome  *
26*199767f8SToomas Soome  * $FreeBSD$
27*199767f8SToomas Soome  */
28*199767f8SToomas Soome 
29*199767f8SToomas Soome #ifndef _SYS__TYPES_H_
30*199767f8SToomas Soome #define _SYS__TYPES_H_
31*199767f8SToomas Soome 
32*199767f8SToomas Soome #include <sys/cdefs.h>
33*199767f8SToomas Soome #include <machine/_types.h>
34*199767f8SToomas Soome 
35*199767f8SToomas Soome /*
36*199767f8SToomas Soome  * Standard type definitions.
37*199767f8SToomas Soome  */
38*199767f8SToomas Soome typedef	__int32_t	__blksize_t;	/* file block size */
39*199767f8SToomas Soome typedef	__int64_t	__blkcnt_t;	/* file block count */
40*199767f8SToomas Soome typedef	__int32_t	__clockid_t;	/* clock_gettime()... */
41*199767f8SToomas Soome typedef	__uint32_t	__fflags_t;	/* file flags */
42*199767f8SToomas Soome typedef	__uint64_t	__fsblkcnt_t;
43*199767f8SToomas Soome typedef	__uint64_t	__fsfilcnt_t;
44*199767f8SToomas Soome typedef	__uint32_t	__gid_t;
45*199767f8SToomas Soome typedef	__int64_t	__id_t;		/* can hold a gid_t, pid_t, or uid_t */
46*199767f8SToomas Soome typedef	__uint32_t	__ino_t;	/* inode number */
47*199767f8SToomas Soome typedef	long		__key_t;	/* IPC key (for Sys V IPC) */
48*199767f8SToomas Soome typedef	__int32_t	__lwpid_t;	/* Thread ID (a.k.a. LWP) */
49*199767f8SToomas Soome typedef	__uint16_t	__mode_t;	/* permissions */
50*199767f8SToomas Soome typedef	int		__accmode_t;	/* access permissions */
51*199767f8SToomas Soome typedef	int		__nl_item;
52*199767f8SToomas Soome typedef	__uint16_t	__nlink_t;	/* link count */
53*199767f8SToomas Soome typedef	__int64_t	__off_t;	/* file offset */
54*199767f8SToomas Soome typedef	__int32_t	__pid_t;	/* process [group] */
55*199767f8SToomas Soome typedef	__int64_t	__rlim_t;	/* resource limit - intentionally */
56*199767f8SToomas Soome 					/* signed, because of legacy code */
57*199767f8SToomas Soome 					/* that uses -1 for RLIM_INFINITY */
58*199767f8SToomas Soome typedef	__uint8_t	__sa_family_t;
59*199767f8SToomas Soome typedef	__uint32_t	__socklen_t;
60*199767f8SToomas Soome typedef	long		__suseconds_t;	/* microseconds (signed) */
61*199767f8SToomas Soome typedef	struct __timer	*__timer_t;	/* timer_gettime()... */
62*199767f8SToomas Soome typedef	struct __mq	*__mqd_t;	/* mq_open()... */
63*199767f8SToomas Soome typedef	__uint32_t	__uid_t;
64*199767f8SToomas Soome typedef	unsigned int	__useconds_t;	/* microseconds (unsigned) */
65*199767f8SToomas Soome typedef	int		__cpuwhich_t;	/* which parameter for cpuset. */
66*199767f8SToomas Soome typedef	int		__cpulevel_t;	/* level parameter for cpuset. */
67*199767f8SToomas Soome typedef int		__cpusetid_t;	/* cpuset identifier. */
68*199767f8SToomas Soome 
69*199767f8SToomas Soome /*
70*199767f8SToomas Soome  * Unusual type definitions.
71*199767f8SToomas Soome  */
72*199767f8SToomas Soome /*
73*199767f8SToomas Soome  * rune_t is declared to be an ``int'' instead of the more natural
74*199767f8SToomas Soome  * ``unsigned long'' or ``long''.  Two things are happening here.  It is not
75*199767f8SToomas Soome  * unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
76*199767f8SToomas Soome  * it looks like 10646 will be a 31 bit standard.  This means that if your
77*199767f8SToomas Soome  * ints cannot hold 32 bits, you will be in trouble.  The reason an int was
78*199767f8SToomas Soome  * chosen over a long is that the is*() and to*() routines take ints (says
79*199767f8SToomas Soome  * ANSI C), but they use __ct_rune_t instead of int.
80*199767f8SToomas Soome  *
81*199767f8SToomas Soome  * NOTE: rune_t is not covered by ANSI nor other standards, and should not
82*199767f8SToomas Soome  * be instantiated outside of lib/libc/locale.  Use wchar_t.  wint_t and
83*199767f8SToomas Soome  * rune_t must be the same type.  Also, wint_t should be able to hold all
84*199767f8SToomas Soome  * members of the largest character set plus one extra value (WEOF), and
85*199767f8SToomas Soome  * must be at least 16 bits.
86*199767f8SToomas Soome  */
87*199767f8SToomas Soome typedef	int		__ct_rune_t;	/* arg type for ctype funcs */
88*199767f8SToomas Soome typedef	__ct_rune_t	__rune_t;	/* rune_t (see above) */
89*199767f8SToomas Soome typedef	__ct_rune_t	__wint_t;	/* wint_t (see above) */
90*199767f8SToomas Soome 
91*199767f8SToomas Soome /* Clang already provides these types as built-ins, but only in C++ mode. */
92*199767f8SToomas Soome #if !defined(__clang__) || !defined(__cplusplus)
93*199767f8SToomas Soome typedef	__uint_least16_t __char16_t;
94*199767f8SToomas Soome typedef	__uint_least32_t __char32_t;
95*199767f8SToomas Soome #endif
96*199767f8SToomas Soome /* In C++11, char16_t and char32_t are built-in types. */
97*199767f8SToomas Soome #if defined(__cplusplus) && __cplusplus >= 201103L
98*199767f8SToomas Soome #define	_CHAR16_T_DECLARED
99*199767f8SToomas Soome #define	_CHAR32_T_DECLARED
100*199767f8SToomas Soome #endif
101*199767f8SToomas Soome 
102*199767f8SToomas Soome typedef	__uint32_t	__dev_t;	/* device number */
103*199767f8SToomas Soome 
104*199767f8SToomas Soome typedef	__uint32_t	__fixpt_t;	/* fixed point number */
105*199767f8SToomas Soome 
106*199767f8SToomas Soome /*
107*199767f8SToomas Soome  * mbstate_t is an opaque object to keep conversion state during multibyte
108*199767f8SToomas Soome  * stream conversions.
109*199767f8SToomas Soome  */
110*199767f8SToomas Soome typedef union {
111*199767f8SToomas Soome 	char		__mbstate8[128];
112*199767f8SToomas Soome 	__int64_t	_mbstateL;	/* for alignment */
113*199767f8SToomas Soome } __mbstate_t;
114*199767f8SToomas Soome 
115*199767f8SToomas Soome typedef unsigned long	__rman_res_t;
116*199767f8SToomas Soome 
117*199767f8SToomas Soome #endif /* !_SYS__TYPES_H_ */
118