Fix mdoc(7)/man(7) mix up.
[netbsd-mini2440.git] / share / man / man5 / types.5
blob51a9b3ff5ec2e25e85dec81d53a9aaa80679ed4f
1 .\"     $NetBSD: types.5,v 1.11 2005/12/26 20:00:04 perry Exp $
2 .\"
3 .\" Copyright (c) 1980, 1991, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)types.5     8.1 (Berkeley) 6/5/93
31 .\"
32 .Dd December 26, 2005
33 .Dt TYPES 5
34 .Os
35 .Sh NAME
36 .Nm types
37 .Nd system data types
38 .Sh SYNOPSIS
39 .In sys/types.h
40 .Sh DESCRIPTION
41 The file
42 .Aq Pa sys/types.h
43 contains the defined data types used in the kernel (most are
44 used throughout the system).
45 .Pp
46 Note that in
47 .Nx
48 code, when an integer of a specific width is needed, the C99
49 style
50 .Vt int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t
51 should be used.
52 The old
53 .Bx
54 style
55 .Vt u_int8_t, u_int16_t, u_int32_t, u_int64_t
56 are deprecated.
57 .Bd -literal
58 #ifndef _SYS_TYPES_H_
59 #define _SYS_TYPES_H_
61 /* Machine type dependent parameters. */
62 #include \*[Lt]machine/types.h\*[Gt]
64 #include \*[Lt]machine/ansi.h\*[Gt]
65 #include \*[Lt]machine/endian.h\*[Gt]
67 #if !defined(_POSIX_SOURCE) \*[Am]\*[Am] !defined(_XOPEN_SOURCE)
68 typedef unsigned char   u_char;
69 typedef unsigned short  u_short;
70 typedef unsigned int    u_int;
71 typedef unsigned long   u_long;
73 typedef unsigned char   unchar;         /* Sys V compatibility */
74 typedef unsigned short  ushort;         /* Sys V compatibility */
75 typedef unsigned int    uint;           /* Sys V compatibility */
76 typedef unsigned long   ulong;          /* Sys V compatibility */
77 #endif
79 typedef uint64_t        u_quad_t;       /* quads */
80 typedef int64_t         quad_t;
81 typedef quad_t *        qaddr_t;
83 typedef char *          caddr_t;        /* core address */
84 typedef int32_t         daddr_t;        /* disk address */
85 typedef int32_t         dev_t;          /* device number */
86 typedef uint32_t        fixpt_t;        /* fixed point number */
87 typedef uint32_t        gid_t;          /* group id */
88 typedef uint32_t        ino_t;          /* inode number */
89 typedef long            key_t;          /* IPC key (for Sys V IPC) */
90 typedef uint16_t        mode_t;         /* permissions */
91 typedef uint16_t        nlink_t;        /* link count */
92 typedef quad_t          off_t;          /* file offset */
93 typedef int32_t         pid_t;          /* process id */
94 typedef quad_t          rlim_t;         /* resource limit */
95 typedef int32_t         segsz_t;        /* segment size */
96 typedef int32_t         swblk_t;        /* swap offset */
97 typedef uint32_t        uid_t;          /* user id */
99 #if !defined(_POSIX_SOURCE) \*[Am]\*[Am] !defined(_XOPEN_SOURCE)
100 /* Major, minor numbers, dev_t's. */
101 #define major(x)        ((int32_t)(((uint32_t)(x) \*[Gt]\*[Gt] 8) \*[Am] 0xff))
102 #define minor(x)        ((int32_t)((x) \*[Am] 0xff))
103 #define makedev(x,y)    ((dev_t)(((x) \*[Lt]\*[Lt] 8) | (y)))
104 #endif
106 #ifdef  _BSD_CLOCK_T_
107 typedef _BSD_CLOCK_T_   clock_t;
108 #undef  _BSD_CLOCK_T_
109 #endif
111 #ifdef  _BSD_SIZE_T_
112 typedef _BSD_SIZE_T_    size_t;
113 #undef  _BSD_SIZE_T_
114 #endif
116 #ifdef  _BSD_SSIZE_T_
117 typedef _BSD_SSIZE_T_   ssize_t;
118 #undef  _BSD_SSIZE_T_
119 #endif
121 #ifdef  _BSD_TIME_T_
122 typedef _BSD_TIME_T_    time_t;
123 #undef  _BSD_TIME_T_
124 #endif
126 #ifdef  _BSD_CLOCKID_T_
127 typedef _BSD_CLOCKID_T_ clockid_t;
128 #undef  _BSD_CLOCKID_T_
129 #endif
131 #ifdef  _BSD_TIMER_T_
132 typedef _BSD_TIMER_T_   timer_t;
133 #undef  _BSD_TIMER_T_
134 #endif
136 #if !defined(_POSIX_SOURCE) \*[Am]\*[Am] !defined(_XOPEN_SOURCE)
137 #define NBBY    8               /* number of bits in a byte */
140  * Select uses bit masks of file descriptors in longs.  These macros
141  * manipulate such bit fields (the filesystem macros use chars).
142  * FD_SETSIZE may be defined by the user, but the default here should
143  * be enough for most uses.
144  */
145 #ifndef FD_SETSIZE
146 #define FD_SETSIZE      256
147 #endif
149 typedef int32_t fd_mask;
150 #define NFDBITS (sizeof(fd_mask) * NBBY)        /* bits per mask */
152 #ifndef howmany
153 #define howmany(x, y)   (((x) + ((y) - 1)) / (y))
154 #endif
156 typedef struct fd_set {
157         fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
158 } fd_set;
160 #define FD_SET(n, p)    ((p)-\*[Gt]fds_bits[(n)/NFDBITS] |= (1 \*[Lt]\*[Lt] ((n) % NFDBITS)))
161 #define FD_CLR(n, p)    ((p)-\*[Gt]fds_bits[(n)/NFDBITS] \*[Am]= ~(1 \*[Lt]\*[Lt] ((n) % NFDBITS)))
162 #define FD_ISSET(n, p)  ((p)-\*[Gt]fds_bits[(n)/NFDBITS] \*[Am] (1 \*[Lt]\*[Lt] ((n) % NFDBITS)))
163 #define FD_COPY(f, t)   memcpy(t, f, sizeof(*(f)))
164 #define FD_ZERO(p)      memset(p, 0, sizeof(*(p)))
166 #endif /* !defined(_POSIX_SOURCE) ... */
167 #endif /* !_SYS_TYPES_H_ */
169 .Sh SEE ALSO
170 .Xr lseek 2 ,
171 .Xr select 2 ,
172 .Xr truncate 2 ,
173 .Xr byteorder 3 ,
174 .Xr time 3 ,
175 .Xr fs 5
176 .Sh HISTORY
179 file appeared in
180 .At v7 .