types
—
standard system data types
The <sys/types.h>
header
contains the common data types used in the system. Although these are meant to
be used within the kernel, most of the system data types are accessible also
to user code. A companion header
<sys/param.h>
, typically used
in the kernel, includes
<sys/types.h>
and provides
additional types as well as other facilities (see
param(3)).
The following standards-compliant system data types are defined:
In addition, when included in user applications,
<sys/types.h>
includes
<pthread.h>
, and thus it
defines also the types used in the POSIX Threads Library,
pthread(3).
Each described type may vary across machines and operating
systems. Only the following properties are guaranteed by the
IEEE Std 1003.1-2001 (“POSIX.1”)
standard:
- The type ssize_t is capable of storing integer values at
least in the range [-1,
SSIZE_MAX
].
- The type useconds_t is an unsigned integer capable of
storing values at least in the range [0, 1000000].
- The type suseconds_t is a signed integer capable of
storing values at least in the range [-1, 1000000].
- The time_t and clock_t types are
either integers or real-floating types.
- The following types are integers: gid_t,
id_t, mode_t,
nlink_t, and uid_t.
- The following types are signed integers: blkcnt_t,
blksize_t, off_t,
pid_t, and ssize_t.
- The following types are unsigned integers: fsblkcnt_t,
fsfilcnt_t, ino_t, and
size_t.
In addition to the standard types,
<sys/types.h>
defines some
data types specific to NetBSD. These are mostly used
in the kernel. A portable implementation should not rely on these types to be
available in other systems. Examples include:
It can be noted that the standard “C99 types”
described in stdint(3) are
preferred to the older fixed size integer types prefixed with an
“u_” (in other words, uint32_t should be
used instead of u_int32_t).
The <sys/types.h>
header
conforms to IEEE Std 1003.1-2001
(“POSIX.1”) with respect to the described standard types.
The <sys/types.h>
header first
appeared in Version 7 AT&T UNIX. In the
current form the header appeared in NetBSD 0.9.