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_ */ 302