TYPES.H(3HEAD) | Headers | TYPES.H(3HEAD) |
types.h, types - primitive system data types
#include <sys/types.h>
The data types defined in <sys/types.h> are as follows:
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.
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
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
_STACK_GROWS_UPWARD
_STACK_GROWS_DOWNWARD
_CHAR_IS_UNSIGNED
_CHAR_IS_SIGNED
_CHAR_ALIGNMENT
_SHORT_ALIGNMENT
_INT_ALIGNMENT
_LONG_ALIGNMENT
_LONG_LONG_ALIGNMENT
_DOUBLE_ALIGNMENT
_LONG_DOUBLE_ALIGNMENT
_POINTER_ALIGNMENT
_FLOAT_ALIGNMENT
_MAX_ALIGNMENT
_LONG_LONG_ALIGNMENT_32
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.
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
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Stable |
August 16, 2024 | OmniOS |