]> git.proxmox.com Git - mirror_edk2.git/blob - StdLib/Include/sys/types.h
StdLib: Add isDirSep character classification macro and function. Implement several...
[mirror_edk2.git] / StdLib / Include / sys / types.h
1 /** @file
2 System type declarations.
3
4 Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available
6 under the terms and conditions of the BSD License that accompanies this
7 distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 Copyright (c) 1990, 1993
14 The Regents of the University of California. All rights reserved.
15
16 Redistribution and use in source and binary forms, with or without
17 modification, are permitted provided that the following conditions
18 are met:
19 - Redistributions of source code must retain the above copyright
20 notice, this list of conditions and the following disclaimer.
21 - Redistributions in binary form must reproduce the above copyright
22 notice, this list of conditions and the following disclaimer in the
23 documentation and/or other materials provided with the distribution.
24 - Neither the name of the University nor the names of its contributors
25 may be used to endorse or promote products derived from this software
26 without specific prior written permission.
27
28 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
32 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
33 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
34 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
36 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
37 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38 POSSIBILITY OF SUCH DAMAGE.
39
40 NetBSD: types.h,v 1.71.12.1 2007/09/27 13:40:47 xtraeme Exp
41 types.h 8.4 (Berkeley) 1/21/94
42 **/
43 #ifndef _SYS_TYPES_H_
44 #define _SYS_TYPES_H_
45
46 #include <sys/EfiCdefs.h>
47
48 /* Machine type dependent parameters. */
49 #include <machine/types.h>
50
51 #include <machine/ansi.h>
52 #include <machine/int_types.h>
53
54
55 #include <sys/ansi.h>
56
57 #ifndef int8_t
58 typedef __int8_t int8_t;
59 #define int8_t __int8_t
60 #endif
61
62 #ifndef uint8_t
63 typedef __uint8_t uint8_t;
64 #define uint8_t __uint8_t
65 #endif
66
67 #ifndef int16_t
68 typedef __int16_t int16_t;
69 #define int16_t __int16_t
70 #endif
71
72 #ifndef uint16_t
73 typedef __uint16_t uint16_t;
74 #define uint16_t __uint16_t
75 #endif
76
77 #ifndef int32_t
78 typedef __int32_t int32_t;
79 #define int32_t __int32_t
80 #endif
81
82 #ifndef uint32_t
83 typedef __uint32_t uint32_t;
84 #define uint32_t __uint32_t
85 #endif
86
87 #ifndef int64_t
88 typedef __int64_t int64_t;
89 #define int64_t __int64_t
90 #endif
91
92 #ifndef uint64_t
93 typedef __uint64_t uint64_t;
94 #define uint64_t __uint64_t
95 #endif
96
97 typedef uint8_t u_int8_t;
98 typedef uint16_t u_int16_t;
99 typedef uint32_t u_int32_t;
100 typedef uint64_t u_int64_t;
101
102 #include <machine/endian.h>
103
104 #if defined(_NETBSD_SOURCE)
105 typedef UINT8 u_char;
106 typedef UINT16 u_short;
107 typedef UINTN u_int;
108 typedef ULONGN u_long;
109
110 typedef UINT8 unchar; /* Sys V compatibility */
111 typedef UINT16 ushort; /* Sys V compatibility */
112 typedef UINTN uint; /* Sys V compatibility */
113 typedef ULONGN ulong; /* Sys V compatibility */
114
115 typedef u_long cpuid_t;
116 #endif
117
118 typedef uint64_t u_quad_t; /* quads */
119 typedef int64_t quad_t;
120 typedef quad_t * qaddr_t;
121
122 /*
123 * The types longlong_t and u_longlong_t exist for use with the
124 * Sun-derived XDR routines involving these types, and their usage
125 * in other contexts is discouraged. Further note that these types
126 * may not be equivalent to "long long" and "unsigned long long",
127 * they are only guaranteed to be signed and unsigned 64-bit types
128 * respectively. Portable programs that need 64-bit types should use
129 * the C99 types int64_t and uint64_t instead.
130 */
131
132 typedef int64_t longlong_t; /* for XDR */
133 typedef uint64_t u_longlong_t; /* for XDR */
134
135 typedef int64_t blkcnt_t; /* fs block count */
136 typedef uint32_t blksize_t; /* fs optimal block size */
137
138 #ifndef fsblkcnt_t
139 typedef __fsblkcnt_t fsblkcnt_t; /* fs block count (statvfs) */
140 #define fsblkcnt_t __fsblkcnt_t
141 #endif
142
143 #ifndef fsfilcnt_t
144 typedef __fsfilcnt_t fsfilcnt_t; /* fs file count */
145 #define fsfilcnt_t __fsfilcnt_t
146 #endif
147
148 #ifndef caddr_t
149 typedef __caddr_t caddr_t; /* core address */
150 #define caddr_t __caddr_t
151 #endif
152
153 #ifdef __daddr_t
154 typedef __daddr_t daddr_t; /* disk address */
155 #undef __daddr_t
156 #else
157 typedef int64_t daddr_t; /* disk address */
158 #endif
159
160 typedef uint32_t dev_t; /* device number */
161 typedef uint32_t fixpt_t; /* fixed point number */
162
163 #ifndef gid_t
164 typedef __gid_t gid_t; /* group id */
165 #define gid_t __gid_t
166 #endif
167
168 typedef uint32_t id_t; /* group id, process id or user id */
169 typedef uint64_t ino_t; /* inode number */
170 typedef EFI_LONG_T key_t; /* IPC key (for Sys V IPC) */
171
172 #ifndef mode_t
173 typedef __mode_t mode_t; /* permissions */
174 #define mode_t __mode_t
175 #endif
176
177 typedef uint32_t nlink_t; /* link count */
178
179 #ifndef off_t
180 typedef __off_t off_t; /* file offset */
181 #define off_t __off_t
182 #endif
183
184 #ifndef pid_t
185 typedef __pid_t pid_t; /* process id */
186 #define pid_t __pid_t
187 #endif
188 typedef int32_t lwpid_t; /* LWP id */
189 typedef quad_t rlim_t; /* resource limit */
190 typedef int32_t segsz_t; /* segment size */
191 typedef int32_t swblk_t; /* swap offset */
192
193 #ifndef uid_t
194 typedef __uid_t uid_t; /* user id */
195 #define uid_t __uid_t
196 #endif
197
198 typedef int64_t dtime_t; /* on-disk time_t */
199
200 #if defined(_LIBC)
201 /*
202 * semctl(2)'s argument structure. This is here for the benefit of
203 * <sys/syscallargs.h>. It is not in the user's namespace in SUSv2.
204 * The SUSv2 semctl(2) takes variable arguments.
205 */
206 union __semun {
207 int val; /* value for SETVAL */
208 struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
209 unsigned short *array; /* array for GETALL & SETALL */
210 };
211 /* For the same reason as above */
212 #include <sys/stdint.h>
213 typedef intptr_t semid_t;
214 #endif /* _LIBC */
215
216 /*
217 * These belong in EfiSysCall.h, but are also placed here to ensure that
218 * long arguments will be promoted to off_t if the program fails to
219 * include that header or explicitly cast them to off_t.
220 */
221 #ifndef __OFF_T_SYSCALLS_DECLARED
222 #define __OFF_T_SYSCALLS_DECLARED
223 __BEGIN_DECLS
224 extern off_t lseek (int, off_t, int);
225 extern int truncate (const char *, off_t);
226 extern int ftruncate (int, off_t);
227 __END_DECLS
228 #endif /* __OFF_T_SYSCALLS_DECLARED */
229
230 #if defined(_NETBSD_SOURCE)
231 /* Major, minor numbers, dev_t's. */
232 #define major(x) ((int32_t)((((x) & 0x000fff00) >> 8)))
233 #define minor(x) ((int32_t)((((x) & 0xfff00000) >> 12) | \
234 (((x) & 0x000000ff) >> 0)))
235 #define makedev(x,y) ((dev_t)((((x) << 8) & 0x000fff00) | \
236 (((y) << 12) & 0xfff00000) | \
237 (((y) << 0) & 0x000000ff)))
238 #endif
239
240 #if defined(_BSD_CLOCK_T_) && defined(_EFI_CLOCK_T)
241 typedef _EFI_CLOCK_T clock_t;
242 #undef _BSD_CLOCK_T_
243 #undef _EFI_CLOCK_T
244 #endif
245
246 #ifdef _EFI_SIZE_T_
247 typedef _EFI_SIZE_T_ size_t;
248 #define _SIZE_T
249 #undef _BSD_SIZE_T_
250 #undef _EFI_SIZE_T_
251 #endif
252
253 #ifdef _BSD_SSIZE_T_
254 typedef _BSD_SSIZE_T_ ssize_t;
255 #undef _BSD_SSIZE_T_
256 #endif
257
258 #if defined(_BSD_TIME_T_) && defined(_EFI_TIME_T)
259 typedef _EFI_TIME_T time_t;
260 #undef _BSD_TIME_T_
261 #undef _EFI_TIME_T
262 #endif
263
264 #ifdef _BSD_CLOCKID_T_
265 typedef _BSD_CLOCKID_T_ clockid_t;
266 #undef _BSD_CLOCKID_T_
267 #endif
268
269 #ifdef _BSD_TIMER_T_
270 typedef _BSD_TIMER_T_ timer_t;
271 #undef _BSD_TIMER_T_
272 #endif
273
274 #ifdef _BSD_SUSECONDS_T_
275 typedef _BSD_SUSECONDS_T_ suseconds_t;
276 #undef _BSD_SUSECONDS_T_
277 #endif
278
279 #ifdef _BSD_USECONDS_T_
280 typedef _BSD_USECONDS_T_ useconds_t;
281 #undef _BSD_USECONDS_T_
282 #endif
283
284 #ifdef _NETBSD_SOURCE
285 #include <sys/fd_set.h>
286 #define NBBY __NBBY
287
288 typedef struct kauth_cred *kauth_cred_t;
289
290 #endif
291
292 #if 0
293 #if !defined(_KERNEL) && !defined(_STANDALONE)
294 #if (_POSIX_C_SOURCE - 0L) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
295 defined(_NETBSD_SOURCE)
296 #include <pthread_types.h>
297 #endif
298 #endif
299 #endif /* if 0 */
300
301 #endif /* !_SYS_TYPES_H_ */