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)