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 Solaris
The data types listed below are defined in <sys/types.h> for 32-bit Solaris.
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;
64-bit Solaris
The data types listed below are defined in <sys/types.h> for 64-bit Solaris.
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 long 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 instruc-
tion 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 com-
piler, 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
");
#else
#ifdef _ILP32
printf("The data model is ILP32 in this environment
");
#else
#error "Unknown data model!"
#endif
#endif
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Interface Stability |Stable |
+-----------------------------+-----------------------------+
SEE ALSO
types32.h(3HEAD), attributes(5), standards(5)
SunOS 5.10 6 Oct 2004 types.h(3HEAD)