Home | History | Annotate | Download | only in sys
      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