Configuring lzo on x86_64 needs correct __WORDSIZE.
[AROS.git] / compiler / clib / include / limits.h
blobcf97ccad15f9c446371c10ea2b738198e6ca6f32
1 /*
2 * Copyright © 2004-2012 The AROS Developmemt Team. All rights reserved.
3 * $Id$
5 * ISO C99 Standard: Sizes of integer types <limits.h>
6 * POSIX Standard: implementation-defined constants
7 */
9 #ifndef _LIMITS_H_
10 #define _LIMITS_H_ 1
12 #include <aros/cpu.h> /* For __WORDSIZE */
15 * Define ANSI <limits.h> for standard 32-bit words.
16 * We're assuming
17 * 8-bit 'char',
18 * 16-bit 'short int', and
19 * 32-bit 'int' and 'long int'.
22 /* Number of bits in a 'char' */
23 #define CHAR_BIT 8
25 /* Minimum and maximum number displayable with 'signed char' */
26 #define SCHAR_MIN (-128)
27 #define SCHAR_MAX 127
29 /* Minimum and maximum number displayable with 'char' */
30 #define CHAR_MIN SCHAR_MIN
31 #define CHAR_MAX SCHAR_MAX
33 /* Maximum number displayable with 'unsigned char'. Minimum is 0. */
34 #define UCHAR_MAX 255
37 /* Minimum and maximum number displayable with 'signed short int' */
38 #define SHRT_MIN (-32768)
39 #define SHRT_MAX 32767
41 /* Maximum number displayable with 'unsigned short int'. Minimum is 0. */
42 #define USHRT_MAX 65535
45 /* Minimum and maximum displayable with 'signed int' */
46 #define INT_MAX 2147483647
47 #define INT_MIN (-INT_MAX - 1)
49 /* Maximum value displayable with 'unsigned int'. Minimum is 0. */
50 # define UINT_MAX 4294967295U
52 /* Minimum and maximum number displayable with `signed long int' */
53 #if __WORDSIZE == 64
54 # define LONG_MAX 9223372036854775807L
55 #else
56 # define LONG_MAX 2147483647L
57 #endif
58 #define LONG_MIN (-LONG_MAX - 1L)
60 /* Maximum number displayable with `unsigned long int'. Minimum is 0. */
61 #if __WORDSIZE == 64
62 # define ULONG_MAX 18446744073709551615UL
63 #else
64 # define ULONG_MAX 4294967295UL
65 #endif
67 #define LLONG_MIN (-0x7fffffffffffffffLL - 1)
68 #define LLONG_MAX 0x7fffffffffffffffLL
69 #define ULLONG_MAX 0xffffffffffffffffULL
71 #define MB_LEN_MAX 6 /* 31-bit UTF-8 */
74 * The POSIX limits are quite complex. You can actually omit half these
75 * definitions if you can't determine them at compile time. You are
76 * supposed to use sysconf() to query the actual values.
78 * There are also made visible by POSIX version. Please don't change
79 * that, otherwise we are no longer POSIX compatible.
82 #define ARG_MAX 40960
83 #define CHILD_MAX _POSIX_CHILD_MAX
84 #define LINK_MAX _POSIX_LINK_MAX
85 #define MAX_CANON _POSIX_MAX_CANON
86 #define MAX_INPUT _POSIX_MAX_INPUT
87 #define OPEN_MAX _POSIX_OPEN_MAX
88 #define PIPE_BUF _POSIX_PIPE_BUF
89 #define STREAM_MAX _POSIX_STREAM_MAX
90 #define TZNAME_MAX _POSIX_TZNAME_MAX
92 #define BC_BASE_MAX _POSIX2_BC_BASE_MAX
93 #define BC_DIM_MAX _POSIX2_BC_DIM_MAX
94 #define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
95 #define BC_STRING_MAX _POSIX2_BC_STRING_MAX
96 #define CHARCLASS_NAME_MAX _POSIX2_CHARCLASS_NAME_MAX
97 #define COLL_WEIGHTS_MAX _POSIX2_COLL_WEIGHTS_MAX
98 #define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
99 #define LINE_MAX _POSIX2_LINE_MAX
100 #define RE_DUP_MAX _POSIX2_RE_DUP_MAX
102 #define _POSIX_ARG_MAX 4096
103 #define _POSIX_CHILD_MAX 25
104 #define _POSIX_LINK_MAX 8
105 #define _POSIX_MAX_CANON 255
106 #define _POSIX_MAX_INPUT 255
107 #define _POSIX_OPEN_MAX 20
108 #define _POSIX_NAME_MAX 32
109 #define _POSIX_NGROUPS_MAX 16
110 #define _POSIX_PATH_MAX 256
111 #define _POSIX_PIPE_BUF 512
112 #define _POSIX_SSIZE_MAX 32767
113 #define _POSIX_STREAM_MAX 8
114 #define _POSIX_TZNAME_MAX 6
115 #define _POSIX2_BC_BASE_MAX 99
116 #define _POSIX2_BC_DIM_MAX 2048
117 #define _POSIX2_BC_SCALE_MAX 99
118 #define _POSIX2_BC_STRING_MAX 1000
119 #define _POSIX2_EQUIV_CLASS_MAX 2
120 #define _POSIX2_EXPR_NEST_MAX 32
121 #define _POSIX2_LINE_MAX 2048
122 #define _POSIX2_RE_DUP_MAX 255
124 #define _POSIX_AIO_LISTIO_MAX 2
125 #define _POSIX_AIO_MAX 1
126 #define _POSIX_DELAYTIMER_MAX 32
127 #define _POSIX_MQ_OPEN_MAX 8
128 #define _POSIX_MQ_PRIO_MAX 32
129 #define _POSIX_RTSIG_MAX 8
130 #define _POSIX_SEM_NSEMS_MAX 255
131 #define _POSIX_SEM_MAX_VALUE 32767
132 #define _POSIX_SIGQUEUE_MAX 32
133 #define _POSIX_TIMER_MAX 32
135 #define _POSIX_THREAD_DESTRUCTOR_INTERATIONS 4
136 #define _POSIX_THREAD_KEYS_MAX 128
137 #define _POSIX_THREAD_THREADS_MAX 64
139 #define FILESIZEBITS 32
140 #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
141 #define LOGIN_NAME_MAX _POSIX_LOGIN_NAME_MAX
142 #define SYMLINK_MAX _POSIX_SYMLINK_MAX
143 #define SYMLOOP_MAX _POSIX_SYMLOOP_MAX
144 #define TTY_NAME_MAX _POSIX_TTY_NAME_MAX
145 #define NGROUPS_MAX _POSIX_NGROUPS_MAX
147 #define _POSIX_HOST_NAME_MAX 255
148 #define _POSIX_LOGIN_NAME_MAX 9
149 #define _POSIX_SS_REPL_MAX 4
150 #define _POSIX_SYMLINK_MAX 255
151 #define _POSIX_SYMLOOP_MAX 8
152 #define _POSIX_RE_DUP_MAX 255
153 #define _POSIX_TRACE_EVENT_NAME_MAX 30
154 #define _POSIX_TRACE_NAME_MAX 8
155 #define _POSIX_TRACE_SYS_MAX 8
156 #define _POSIX_TRACE_USER_EVENT_MAX 32
157 #define _POSIX_TTY_NAME_MAX 9
158 #define _POSIX2_CHARCLASS_NAME_MAX 14
159 #define _POSIX2_COLL_WEIGHTS_MAX 2
161 #define ATEXIT_MAX 32
162 #define IOV_MAX _XOPEN_IOV_MAX
163 #define PAGESIZE 4096
164 #define PAGE_SIZE PAGESIZE
165 #define NAME_MAX _XOPEN_NAME_MAX
166 #define PATH_MAX _XOPEN_PATH_MAX
168 #define _XOPEN_IOV_MAX 16
169 #define _XOPEN_NAME_MAX 255
170 #define _XOPEN_PATH_MAX 1024
172 #define NL_ARGMAX 9
173 #define NL_LANGMAX 14
174 #define NL_MSGMAX 32767
175 #define NL_NMAX 1
176 #define NL_SETMAX 255
177 #define NL_TEXTMAX _POSIX2_LINE_MAX
179 #define NZERO 0
182 * The following are specific to particular POSIX subsystems, which are
183 * switched on or off as part of <unistd.h>
186 /* _POSIX_ADVISORY_INFO */
187 #define POSIX_ALLOC_SIZE_MIN // XXX
188 #define POSIX_REC_INCR_XFER_SIZE // XXX
189 #define POSIX_REC_MAX_XFER_SIZE // XXX
190 #define POSIX_REC_XFER_ALIGN // XXX
192 /* _POSIX_ASYNCHRONOUS_IO */
193 #define AIO_LISTIO_MAX _POSIX_AIO_LISTIO_MAX
194 #define AIO_MAX _POSIX_AIO_MAX
195 #define AIO_PRIO_DELTA_MAX 0
197 /* _POSIX_MESSAGE_PASSING */
198 #define MQ_OPEN_MAX _POSIX_MQ_OPEN_MAX
199 #define MQ_PRIO_MAX _POSIX_MQ_PRIO_MAX
201 /* _POSIX_REALTIME_SIGNALS */
202 #define RTSIG_MAX _POSIX_RTSIG_MAX
203 #define SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX
205 /* _POSIX_SEMAPHORES */
206 #define SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX
207 #define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX
209 /* _POSIX_SPORADIC_SERVER */
210 #define SS_REPL_MAX _POSIX_SS_REPL_MAX
212 /* _POSIX_THREADS */
213 #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
214 #define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
215 #define PTHREAD_STACK_MIN 0
216 #define PTHREAD_THREADS_MAX _POSIX_THREAD_THREADS_MAX
218 /* _POSIX_TIMERS */
219 #define DELAYTIMER_MAX _POSIX_DELAYTIMER_MAX
220 #define TIMER_MAX _POSIX_TIMER_MAX
222 /* _POSIX_TRACE */
223 #define TRACE_EVENT_NAME_MAX _POSIX_TRACE_EVENT_NAME_MAX
224 #define TRACE_NAME_MAX _POSIX_TRACE_NAME_MAX
225 #define TRACE_SYS_MAX _POSIX_TRACE_SYS_MAX
226 #define TRACE_USER_EVENT_MAX _POSIX_TRACE_USER_EVENT_MAX
228 #define SIZE_T_MAX ULONG_MAX /* max value for a size_t */
230 #endif /* _LIMITS_H_ */