1 /* Copyright (C) 1991-2018 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
19 * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
23 #define _SYS_TYPES_H 1
29 #include <bits/types.h>
32 # ifndef __u_char_defined
33 typedef __u_char u_char
;
34 typedef __u_short u_short
;
35 typedef __u_int u_int
;
36 typedef __u_long u_long
;
37 typedef __quad_t quad_t
;
38 typedef __u_quad_t u_quad_t
;
39 typedef __fsid_t fsid_t
;
40 # define __u_char_defined
44 typedef __loff_t loff_t
;
46 #ifndef __ino_t_defined
47 # ifndef __USE_FILE_OFFSET64
48 typedef __ino_t ino_t
;
50 typedef __ino64_t ino_t
;
52 # define __ino_t_defined
54 #if defined __USE_LARGEFILE64 && !defined __ino64_t_defined
55 typedef __ino64_t ino64_t
;
56 # define __ino64_t_defined
59 #ifndef __dev_t_defined
60 typedef __dev_t dev_t
;
61 # define __dev_t_defined
64 #ifndef __gid_t_defined
65 typedef __gid_t gid_t
;
66 # define __gid_t_defined
69 #ifndef __mode_t_defined
70 typedef __mode_t mode_t
;
71 # define __mode_t_defined
74 #ifndef __nlink_t_defined
75 typedef __nlink_t nlink_t
;
76 # define __nlink_t_defined
79 #ifndef __uid_t_defined
80 typedef __uid_t uid_t
;
81 # define __uid_t_defined
84 #ifndef __off_t_defined
85 # ifndef __USE_FILE_OFFSET64
86 typedef __off_t off_t
;
88 typedef __off64_t off_t
;
90 # define __off_t_defined
92 #if defined __USE_LARGEFILE64 && !defined __off64_t_defined
93 typedef __off64_t off64_t
;
94 # define __off64_t_defined
97 #ifndef __pid_t_defined
98 typedef __pid_t pid_t
;
99 # define __pid_t_defined
102 #if (defined __USE_XOPEN || defined __USE_XOPEN2K8) \
103 && !defined __id_t_defined
105 # define __id_t_defined
108 #ifndef __ssize_t_defined
109 typedef __ssize_t ssize_t
;
110 # define __ssize_t_defined
114 # ifndef __daddr_t_defined
115 typedef __daddr_t daddr_t
;
116 typedef __caddr_t caddr_t
;
117 # define __daddr_t_defined
121 #if (defined __USE_MISC || defined __USE_XOPEN) && !defined __key_t_defined
122 typedef __key_t key_t
;
123 # define __key_t_defined
126 #if defined __USE_XOPEN || defined __USE_XOPEN2K8
127 # include <bits/types/clock_t.h>
129 #include <bits/types/clockid_t.h>
130 #include <bits/types/time_t.h>
131 #include <bits/types/timer_t.h>
134 # ifndef __useconds_t_defined
135 typedef __useconds_t useconds_t
;
136 # define __useconds_t_defined
138 # ifndef __suseconds_t_defined
139 typedef __suseconds_t suseconds_t
;
140 # define __suseconds_t_defined
144 #define __need_size_t
148 /* Old compatibility names for C types. */
149 typedef unsigned long int ulong
;
150 typedef unsigned short int ushort
;
151 typedef unsigned int uint
;
154 /* These size-specific names are used by some of the inet code. */
156 #include <bits/stdint-intn.h>
158 #if !__GNUC_PREREQ (2, 7)
160 /* These were defined by ISO C without the first `_'. */
161 typedef unsigned char u_int8_t
;
162 typedef unsigned short int u_int16_t
;
163 typedef unsigned int u_int32_t
;
164 # if __WORDSIZE == 64
165 typedef unsigned long int u_int64_t
;
167 __extension__
typedef unsigned long long int u_int64_t
;
170 typedef int register_t
;
174 /* For GCC 2.7 and later, we can use specific type-size attributes. */
175 # define __u_intN_t(N, MODE) \
176 typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))
178 __u_intN_t (8, __QI__
);
179 __u_intN_t (16, __HI__
);
180 __u_intN_t (32, __SI__
);
181 __u_intN_t (64, __DI__
);
183 typedef int register_t
__attribute__ ((__mode__ (__word__
)));
186 /* Some code from BIND tests this macro to see if the types above are
189 #define __BIT_TYPES_DEFINED__ 1
193 /* In BSD <sys/types.h> is expected to define BYTE_ORDER. */
196 /* It also defines `fd_set' and the FD_* macros for `select'. */
197 # include <sys/select.h>
199 /* BSD defines `major', `minor', and `makedev' in this header.
200 However, these symbols are likely to collide with user code, so we are
201 going to stop defining them here in an upcoming release. Code that needs
202 these macros should include <sys/sysmacros.h> directly. Code that does
203 not need these macros should #undef them after including this header. */
204 # define __SYSMACROS_DEPRECATED_INCLUSION
205 # include <sys/sysmacros.h>
206 # undef __SYSMACROS_DEPRECATED_INCLUSION
207 #endif /* Use misc. */
210 #if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) \
211 && !defined __blksize_t_defined
212 typedef __blksize_t blksize_t
;
213 # define __blksize_t_defined
216 /* Types from the Large File Support interface. */
217 #ifndef __USE_FILE_OFFSET64
218 # ifndef __blkcnt_t_defined
219 typedef __blkcnt_t blkcnt_t
; /* Type to count number of disk blocks. */
220 # define __blkcnt_t_defined
222 # ifndef __fsblkcnt_t_defined
223 typedef __fsblkcnt_t fsblkcnt_t
; /* Type to count file system blocks. */
224 # define __fsblkcnt_t_defined
226 # ifndef __fsfilcnt_t_defined
227 typedef __fsfilcnt_t fsfilcnt_t
; /* Type to count file system inodes. */
228 # define __fsfilcnt_t_defined
231 # ifndef __blkcnt_t_defined
232 typedef __blkcnt64_t blkcnt_t
; /* Type to count number of disk blocks. */
233 # define __blkcnt_t_defined
235 # ifndef __fsblkcnt_t_defined
236 typedef __fsblkcnt64_t fsblkcnt_t
; /* Type to count file system blocks. */
237 # define __fsblkcnt_t_defined
239 # ifndef __fsfilcnt_t_defined
240 typedef __fsfilcnt64_t fsfilcnt_t
; /* Type to count file system inodes. */
241 # define __fsfilcnt_t_defined
245 #ifdef __USE_LARGEFILE64
246 typedef __blkcnt64_t blkcnt64_t
; /* Type to count number of disk blocks. */
247 typedef __fsblkcnt64_t fsblkcnt64_t
; /* Type to count file system blocks. */
248 typedef __fsfilcnt64_t fsfilcnt64_t
; /* Type to count file system inodes. */
252 /* Now add the thread types. */
253 #if defined __USE_POSIX199506 || defined __USE_UNIX98
254 # include <bits/pthreadtypes.h>
259 #endif /* sys/types.h */