1    	/* bits/typesizes.h -- underlying types for *_t.  Linux/x86-64 version.
2    	   Copyright (C) 2012-2015 Free Software Foundation, Inc.
3    	   This file is part of the GNU C Library.
4    	
5    	   The GNU C Library is free software; you can redistribute it and/or
6    	   modify it under the terms of the GNU Lesser General Public
7    	   License as published by the Free Software Foundation; either
8    	   version 2.1 of the License, or (at your option) any later version.
9    	
10   	   The GNU C Library is distributed in the hope that it will be useful,
11   	   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   	   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   	   Lesser General Public License for more details.
14   	
15   	   You should have received a copy of the GNU Lesser General Public
16   	   License along with the GNU C Library; if not, see
17   	   <http://www.gnu.org/licenses/>.  */
18   	
19   	#ifndef _BITS_TYPES_H
20   	# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
21   	#endif
22   	
23   	#ifndef	_BITS_TYPESIZES_H
24   	#define	_BITS_TYPESIZES_H	1
25   	
26   	/* See <bits/types.h> for the meaning of these macros.  This file exists so
27   	   that <bits/types.h> need not vary across different GNU platforms.  */
28   	
29   	/* X32 kernel interface is 64-bit.  */
30   	#if defined __x86_64__ && defined __ILP32__
31   	# define __SYSCALL_SLONG_TYPE	__SQUAD_TYPE
32   	# define __SYSCALL_ULONG_TYPE	__UQUAD_TYPE
33   	#else
34   	# define __SYSCALL_SLONG_TYPE	__SLONGWORD_TYPE
35   	# define __SYSCALL_ULONG_TYPE	__ULONGWORD_TYPE
36   	#endif
37   	
38   	#define __DEV_T_TYPE		__UQUAD_TYPE
39   	#define __UID_T_TYPE		__U32_TYPE
40   	#define __GID_T_TYPE		__U32_TYPE
41   	#define __INO_T_TYPE		__SYSCALL_ULONG_TYPE
42   	#define __INO64_T_TYPE		__UQUAD_TYPE
43   	#define __MODE_T_TYPE		__U32_TYPE
44   	#ifdef __x86_64__
45   	# define __NLINK_T_TYPE		__SYSCALL_ULONG_TYPE
46   	# define __FSWORD_T_TYPE	__SYSCALL_SLONG_TYPE
47   	#else
48   	# define __NLINK_T_TYPE		__UWORD_TYPE
49   	# define __FSWORD_T_TYPE	__SWORD_TYPE
50   	#endif
51   	#define __OFF_T_TYPE		__SYSCALL_SLONG_TYPE
52   	#define __OFF64_T_TYPE		__SQUAD_TYPE
53   	#define __PID_T_TYPE		__S32_TYPE
54   	#define __RLIM_T_TYPE		__SYSCALL_ULONG_TYPE
55   	#define __RLIM64_T_TYPE		__UQUAD_TYPE
56   	#define __BLKCNT_T_TYPE		__SYSCALL_SLONG_TYPE
57   	#define __BLKCNT64_T_TYPE	__SQUAD_TYPE
58   	#define __FSBLKCNT_T_TYPE	__SYSCALL_ULONG_TYPE
59   	#define __FSBLKCNT64_T_TYPE	__UQUAD_TYPE
60   	#define __FSFILCNT_T_TYPE	__SYSCALL_ULONG_TYPE
61   	#define __FSFILCNT64_T_TYPE	__UQUAD_TYPE
62   	#define __ID_T_TYPE		__U32_TYPE
63   	#define __CLOCK_T_TYPE		__SYSCALL_SLONG_TYPE
64   	#define __TIME_T_TYPE		__SYSCALL_SLONG_TYPE
65   	#define __USECONDS_T_TYPE	__U32_TYPE
66   	#define __SUSECONDS_T_TYPE	__SYSCALL_SLONG_TYPE
67   	#define __DADDR_T_TYPE		__S32_TYPE
68   	#define __KEY_T_TYPE		__S32_TYPE
69   	#define __CLOCKID_T_TYPE	__S32_TYPE
70   	#define __TIMER_T_TYPE		void *
71   	#define __BLKSIZE_T_TYPE	__SYSCALL_SLONG_TYPE
72   	#define __FSID_T_TYPE		struct { int __val[2]; }
73   	#define __SSIZE_T_TYPE		__SWORD_TYPE
74   	
75   	#ifdef __x86_64__
76   	/* Tell the libc code that off_t and off64_t are actually the same type
77   	   for all ABI purposes, even if possibly expressed as different base types
78   	   for C type-checking purposes.  */
79   	# define __OFF_T_MATCHES_OFF64_T	1
80   	
81   	/* Same for ino_t and ino64_t.  */
82   	# define __INO_T_MATCHES_INO64_T	1
83   	#endif
84   	
85   	/* Number of descriptors that can fit in an `fd_set'.  */
86   	#define __FD_SETSIZE		1024
87   	
88   	
89   	#endif /* bits/typesizes.h */
90