Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


types.h
001: /* bits/types.h -- definitions of __*_t types underlying *_t types.
002:    Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
003:    This file is part of the GNU C Library.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.  */
019: 
020: /*
021:  * Never include this file directly; use <sys/types.h> instead.
022:  */
023: 
024: #ifndef _BITS_TYPES_H
025: #define _BITS_TYPES_H   1
026: 
027: #include <features.h>
028: #include <bits/wordsize.h>
029: 
030: /* Convenience types.  */
031: typedef unsigned char __u_char;
032: typedef unsigned short int __u_short;
033: typedef unsigned int __u_int;
034: typedef unsigned long int __u_long;
035: 
036: /* Fixed-size types, underlying types depend on word size and compiler.  */
037: typedef signed char __int8_t;
038: typedef unsigned char __uint8_t;
039: typedef signed short int __int16_t;
040: typedef unsigned short int __uint16_t;
041: typedef signed int __int32_t;
042: typedef unsigned int __uint32_t;
043: #if __WORDSIZE == 64
044: typedef signed long int __int64_t;
045: typedef unsigned long int __uint64_t;
046: #elif defined __GLIBC_HAVE_LONG_LONG
047: __extension__ typedef signed long long int __int64_t;
048: __extension__ typedef unsigned long long int __uint64_t;
049: #endif
050: 
051: /* quad_t is also 64 bits.  */
052: #if __WORDSIZE == 64
053: typedef long int __quad_t;
054: typedef unsigned long int __u_quad_t;
055: #elif defined __GLIBC_HAVE_LONG_LONG
056: __extension__ typedef long long int __quad_t;
057: __extension__ typedef unsigned long long int __u_quad_t;
058: #else
059: typedef struct
060: {
061:   long __val[2];
062: } __quad_t;
063: typedef struct
064: {
065:   __u_long __val[2];
066: } __u_quad_t;
067: #endif
068: 
069: 
070: /* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
071:    macros for each of the OS types we define below.  The definitions
072:    of those macros must use the following macros for underlying types.
073:    We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
074:    variants of each of the following integer types on this machine.
075: 
076:         16              -- "natural" 16-bit type (always short)
077:         32              -- "natural" 32-bit type (always int)
078:         64              -- "natural" 64-bit type (long or long long)
079:         LONG32          -- 32-bit type, traditionally long
080:         QUAD            -- 64-bit type, always long long
081:         WORD            -- natural type of __WORDSIZE bits (int or long)
082:         LONGWORD        -- type of __WORDSIZE bits, traditionally long
083: 
084:    We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
085:    conventional uses of `long' or `long long' type modifiers match the
086:    types we define, even when a less-adorned type would be the same size.
087:    This matters for (somewhat) portably writing printf/scanf formats for
088:    these types, where using the appropriate l or ll format modifiers can
089:    make the typedefs and the formats match up across all GNU platforms.  If
090:    we used `long' when it's 64 bits where `long long' is expected, then the
091:    compiler would warn about the formats not matching the argument types,
092:    and the programmer changing them to shut up the compiler would break the
093:    program's portability.
094: 
095:    Here we assume what is presently the case in all the GCC configurations
096:    we support: long long is always 64 bits, long is always word/address size,
097:    and int is always 32 bits.  */
098: 
099: #define __S16_TYPE              short int
100: #define __U16_TYPE              unsigned short int
101: #define __S32_TYPE              int
102: #define __U32_TYPE              unsigned int
103: #define __SLONGWORD_TYPE        long int
104: #define __ULONGWORD_TYPE        unsigned long int
105: #if __WORDSIZE == 32
106: # define __SQUAD_TYPE           __quad_t
107: # define __UQUAD_TYPE           __u_quad_t
108: # define __SWORD_TYPE           int
109: # define __UWORD_TYPE           unsigned int
110: # define __SLONG32_TYPE         long int
111: # define __ULONG32_TYPE         unsigned long int
112: # define __S64_TYPE             __quad_t
113: # define __U64_TYPE             __u_quad_t
114: /* We want __extension__ before typedef's that use nonstandard base types
115:    such as `long long' in C89 mode.  */
116: # define __STD_TYPE             __extension__ typedef
117: #elif __WORDSIZE == 64
118: # define __SQUAD_TYPE           long int
119: # define __UQUAD_TYPE           unsigned long int
120: # define __SWORD_TYPE           long int
121: # define __UWORD_TYPE           unsigned long int
122: # define __SLONG32_TYPE         int
123: # define __ULONG32_TYPE         unsigned int
124: # define __S64_TYPE             long int
125: # define __U64_TYPE             unsigned long int
126: /* No need to mark the typedef with __extension__.   */
127: # define __STD_TYPE             typedef
128: #else
129: # error
130: #endif
131: #include <bits/typesizes.h>     /* Defines __*_T_TYPE macros.  */
132: 
133: 
134: __STD_TYPE __DEV_T_TYPE __dev_t;        /* Type of device numbers.  */
135: __STD_TYPE __UID_T_TYPE __uid_t;        /* Type of user identifications.  */
136: __STD_TYPE __GID_T_TYPE __gid_t;        /* Type of group identifications.  */
137: __STD_TYPE __INO_T_TYPE __ino_t;        /* Type of file serial numbers.  */
138: __STD_TYPE __INO64_T_TYPE __ino64_t;    /* Type of file serial numbers (LFS).*/
139: __STD_TYPE __MODE_T_TYPE __mode_t;      /* Type of file attribute bitmasks.  */
140: __STD_TYPE __NLINK_T_TYPE __nlink_t;    /* Type of file link counts.  */
141: __STD_TYPE __OFF_T_TYPE __off_t;        /* Type of file sizes and offsets.  */
142: __STD_TYPE __OFF64_T_TYPE __off64_t;    /* Type of file sizes and offsets (LFS).  */
143: __STD_TYPE __PID_T_TYPE __pid_t;        /* Type of process identifications.  */
144: __STD_TYPE __FSID_T_TYPE __fsid_t;      /* Type of file system IDs.  */
145: __STD_TYPE __CLOCK_T_TYPE __clock_t;    /* Type of CPU usage counts.  */
146: __STD_TYPE __RLIM_T_TYPE __rlim_t;      /* Type for resource measurement.  */
147: __STD_TYPE __RLIM64_T_TYPE __rlim64_t;  /* Type for resource measurement (LFS).  */
148: __STD_TYPE __ID_T_TYPE __id_t;          /* General type for IDs.  */
149: __STD_TYPE __TIME_T_TYPE __time_t;      /* Seconds since the Epoch.  */
150: __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds.  */
151: __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */
152: 
153: __STD_TYPE __DADDR_T_TYPE __daddr_t;    /* The type of a disk address.  */
154: __STD_TYPE __SWBLK_T_TYPE __swblk_t;    /* Type of a swap block maybe?  */
155: __STD_TYPE __KEY_T_TYPE __key_t;        /* Type of an IPC key.  */
156: 
157: /* Clock ID used in clock and timer functions.  */
158: __STD_TYPE __CLOCKID_T_TYPE __clockid_t;
159: 
160: /* Timer ID returned by `timer_create'.  */
161: __STD_TYPE __TIMER_T_TYPE __timer_t;
162: 
163: /* Type to represent block size.  */
164: __STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
165: 
166: /* Types from the Large File Support interface.  */
167: 
168: /* Type to count number of disk blocks.  */
169: __STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
170: __STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
171: 
172: /* Type to count file system blocks.  */
173: __STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
174: __STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
175: 
176: /* Type to count file system nodes.  */
177: __STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
178: __STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
179: 
180: __STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error.  */
181: 
182: /* These few don't really vary by system, they always correspond
183:    to one of the other defined types.  */
184: typedef __off64_t __loff_t;     /* Type of file sizes and offsets (LFS).  */
185: typedef __quad_t *__qaddr_t;
186: typedef char *__caddr_t;
187: 
188: /* Duplicates info from stdint.h but this is used in unistd.h.  */
189: __STD_TYPE __SWORD_TYPE __intptr_t;
190: 
191: /* Duplicate info from sys/socket.h.  */
192: __STD_TYPE __U32_TYPE __socklen_t;
193: 
194: 
195: #undef __STD_TYPE
196: 
197: #endif /* bits/types.h */
198: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/