TYPES.H(3HEAD)                     Headers                    TYPES.H(3HEAD)
NAME
       types.h, types - primitive system data types
SYNOPSIS
       #include <sys/types.h>DESCRIPTION
       The data types defined in <
sys/types.h> are as follows:   
32-bit illumos       The data types listed below are defined in <
sys/types.h> for 32-bit
       illumos.
         typedef    struct    { int r[1]; } *physadr;
         typedef    long              clock_t;
         typedef    long              daddr_t;
         typedef    char *            caddr_t;
         typedef    unsigned char     unchar;
         typedef    unsigned short    ushort;
         typedef    unsigned int      uint;
         typedef    unsigned long     ulong_t;
         typedef    unsigned long     ino_t;
         typedef    long              uid_t;
         typedef    long              gid_t;
         typedef    ulong_t           nlink_t;
         typedef    ulong_t           mode_t;
         typedef    short             cnt_t;
         typedef    long              time_t;
         typedef    int               label_t[10];
         typedef    ulong_t           dev_t;
         typedef    long              off_t;
         typedef    long              pid_t;
         typedef    long              paddr_t;
         typedef    int               key_t;
         typedef    unsigned char     use_t;
         typedef    short             sysid_t;
         typedef    short             index_t;
         typedef    short             lock_t;
         typedef    unsigned int      size_t;
         typedef    long              clock_t;
         typedef    long              pid_t;
       Several of the above types are altered by the 32-bit large file
       compilation environment; see the 
lfcompile(7) man page for additional
       information on that environment.   
64-bit illumos       The data types listed below are defined in <
sys/types.h> for 64-bit
       illumos.
         typedef     long        blkcnt_t
         typedef     long        clock_t
         typedef     long        daddr_t
         typedef     ulong_t     dev_t
         typedef     ulong_t     fsblkcnt_t
         typedef     ulong_t     fsfilcnt_t
         typedef     int         gid_t
         typedef     int         id_t
         typedef     ulong_t     ino_t
         typedef     int         key_t
         typedef     uint_t      major_t
         typedef     uint_t      minor_t
         typedef     uint_t      mode_t
         typedef     uint_t      nlink_t
         typedef     int         pid_t
         typedef     ptrdiff_t   intptr_t
         typedef     ulong_t     rlim_t
         typedef     ulong_t     size_t
         typedef     uint_t      speed_t
         typedef     long        ssize_t
         typedef     long        suseconds_t
         typedef     uint_t      tcflag_t
         typedef     long        time_t
         typedef     int         uid_t
         typedef     int         wchar_t
   Preprocessor Symbols
       For 32-bit programs, pointers and the C data types 
int and 
long are
       all 32-bit quantities.  For 64-bit programs, pointers and the C data
       type 
long are defined as 64-bit quantities.
       The preprocessor symbol 
_ILP32, made visible by the inclusion of
       <
sys/types.h>, can be used with the preprocessor 
#ifdef construct to
       define sections of code that will be compiled only as part of a
       32-bit version of a given C program.
       The preprocessor symbol 
_LP64 can be used in the same way to define
       sections of code that will be compiled only as part of a 64-bit
       version of a given C program. See EXAMPLES.
       This header incorporates definitions of other preprocessor symbols
       that can be useful when keeping code portable between different
       instruction set architectures.       
_LITTLE_ENDIAN       _BIG_ENDIAN                                  The natural byte order of the processor.
                                  A pointer to an 
int points to the
                                  least/most significant byte of that 
int.       
_STACK_GROWS_UPWARD       _STACK_GROWS_DOWNWARD                                  The processor specific direction of stack
                                  growth. A push onto the stack
                                  increases/decreases the stack pointer, so
                                  it stores data at successively
                                  higher/lower addresses.       
_CHAR_IS_UNSIGNED       _CHAR_IS_SIGNED                                  The C Compiler implements objects of type                                  
char as 
unsigned or 
signed respectively.
                                  This is really an implementation choice of
                                  the compiler, but it is specified in the
                                  ABI and tends to be uniform across
                                  compilers for an instruction set
                                  architecture.       
_CHAR_ALIGNMENT       _SHORT_ALIGNMENT       _INT_ALIGNMENT       _LONG_ALIGNMENT       _LONG_LONG_ALIGNMENT       _DOUBLE_ALIGNMENT       _LONG_DOUBLE_ALIGNMENT       _POINTER_ALIGNMENT       _FLOAT_ALIGNMENT                                  The ABI defines alignment requirements of
                                  each of the primitive object types.  Some,
                                  if not all, might be hardware requirements
                                  as well. The values are expressed in
                                  bytes.       
_MAX_ALIGNMENT                                  The most stringent alignment requirement
                                  as specified by the ABI. Equal to the
                                  maximum of all the above _
XXX_
ALIGNMENT                                  values.       
_LONG_LONG_ALIGNMENT_32                                  The 32-bit ABI supported by a 64-bit
                                  kernel may have different alignment
                                  requirements for primitive object types.
                                  The value of this identifier is expressed
                                  in bytes.
USAGE
       The 
daddr_t type is used for disk addresses except in an inode on
       disk.  Times are encoded in seconds since 00:00:00 UTC, January 1,
       1970. The major and minor parts of a device code specify kind and
       unit number of a device and are installation-dependent. Offsets are
       measured in bytes from the beginning of a file.
       The 
label_t[] types are used to save the processor state while
       another process is running.
EXAMPLES
       Example 1: Use of preprocessor symbol _LP64.
       In the following example, the preprocessor symbol 
_LP64 defines
       sections of code that will be compiled only as part of a 64-bit
       version of the given C program.
         #include <sys/types.h>
         ...
         #ifdef _LP64
                 printf("The data model is LP64 in this environment\n");
         #else
         #ifdef _ILP32
                 printf("The data model is ILP32 in this environment\n");
         #else
         #error "Unknown data model!"
         #endif
         #endif
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Stable          |
       +--------------------+-----------------+
SEE ALSO
       types32.h(3HEAD), 
attributes(7), 
lfcompile(7), 
standards(7)                               August 16, 2024                TYPES.H(3HEAD)