xref: /third_party/musl/include/limits.h (revision 570af302)
1#ifndef _LIMITS_H
2#define _LIMITS_H
3
4#include <features.h>
5
6#include <bits/alltypes.h> /* __LONG_MAX */
7
8/* Support signed or unsigned plain-char */
9
10#if '\xff' > 0
11#define CHAR_MIN 0
12#define CHAR_MAX 255
13#else
14#define CHAR_MIN (-128)
15#define CHAR_MAX 127
16#endif
17
18#define CHAR_BIT 8
19#define SCHAR_MIN (-128)
20#define SCHAR_MAX 127
21#define UCHAR_MAX 255
22#define SHRT_MIN  (-1-0x7fff)
23#define SHRT_MAX  0x7fff
24#define USHRT_MAX 0xffff
25#define INT_MIN  (-1-0x7fffffff)
26#define INT_MAX  0x7fffffff
27#define UINT_MAX 0xffffffffU
28#define LONG_MIN (-LONG_MAX-1)
29#define LONG_MAX __LONG_MAX
30#define ULONG_MAX (2UL*LONG_MAX+1)
31#define LLONG_MIN (-LLONG_MAX-1)
32#define LLONG_MAX  0x7fffffffffffffffLL
33#define ULLONG_MAX (2ULL*LLONG_MAX+1)
34
35#define MB_LEN_MAX 4
36
37#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
38 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
39
40#include <bits/limits.h>
41
42#define PIPE_BUF 4096
43#define FILESIZEBITS 64
44#ifndef NAME_MAX
45#define NAME_MAX 255
46#endif
47#ifdef __LITEOS_A__
48#define PATH_MAX 256
49#define ARG_MAX 4096
50#else
51#define PATH_MAX 4096
52#define ARG_MAX 131072
53#endif
54#define NGROUPS_MAX 32
55#define IOV_MAX 1024
56#define SYMLOOP_MAX 40
57#define WORD_BIT 32
58#define SSIZE_MAX LONG_MAX
59#define TZNAME_MAX 6
60#define TTY_NAME_MAX 32
61#define HOST_NAME_MAX 255
62
63#if LONG_MAX == 0x7fffffffL
64#define LONG_BIT 32
65#else
66#define LONG_BIT 64
67#endif
68
69/* Implementation choices... */
70
71#define PTHREAD_KEYS_MAX 128
72#define PTHREAD_STACK_MIN 2048
73#define PTHREAD_DESTRUCTOR_ITERATIONS 4
74#define SEM_VALUE_MAX 0x7fffffff
75#define SEM_NSEMS_MAX 256
76#define DELAYTIMER_MAX 0x7fffffff
77#ifdef __LITEOS_A__
78#define MQ_PRIO_MAX 1
79#else
80#define MQ_PRIO_MAX 32768
81#endif
82#define LOGIN_NAME_MAX 256
83
84/* Arbitrary numbers... */
85
86#define BC_BASE_MAX 99
87#define BC_DIM_MAX 2048
88#define BC_SCALE_MAX 99
89#define BC_STRING_MAX 1000
90#define CHARCLASS_NAME_MAX 14
91#define COLL_WEIGHTS_MAX 2
92#define EXPR_NEST_MAX 32
93#define LINE_MAX 4096
94#define RE_DUP_MAX 255
95
96#define NL_ARGMAX 9
97#define NL_MSGMAX 32767
98#define NL_SETMAX 255
99#define NL_TEXTMAX 2048
100
101#endif
102
103#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
104
105#ifdef PAGESIZE
106#define PAGE_SIZE PAGESIZE
107#endif
108#define NZERO 20
109#define NL_LANGMAX 32
110
111#endif
112
113#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
114 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
115
116#define NL_NMAX 16
117
118#endif
119
120/* POSIX/SUS requirements follow. These numbers come directly
121 * from SUS and have nothing to do with the host system. */
122
123#define _POSIX_AIO_LISTIO_MAX   2
124#define _POSIX_AIO_MAX          1
125#define _POSIX_ARG_MAX          4096
126#define _POSIX_CHILD_MAX        25
127#define _POSIX_CLOCKRES_MIN     20000000
128#define _POSIX_DELAYTIMER_MAX   32
129#define _POSIX_HOST_NAME_MAX    255
130#define _POSIX_LINK_MAX         8
131#define _POSIX_LOGIN_NAME_MAX   9
132#define _POSIX_MAX_CANON        255
133#define _POSIX_MAX_INPUT        255
134#define _POSIX_MQ_OPEN_MAX      8
135#define _POSIX_MQ_PRIO_MAX      32
136#define _POSIX_NAME_MAX         14
137#define _POSIX_NGROUPS_MAX      8
138#define _POSIX_OPEN_MAX         20
139#define _POSIX_PATH_MAX         256
140#define _POSIX_PIPE_BUF         512
141#define _POSIX_RE_DUP_MAX       255
142#define _POSIX_RTSIG_MAX        8
143#define _POSIX_SEM_NSEMS_MAX    256
144#define _POSIX_SEM_VALUE_MAX    32767
145#define _POSIX_SIGQUEUE_MAX     32
146#define _POSIX_SSIZE_MAX        32767
147#define _POSIX_STREAM_MAX       8
148#define _POSIX_SS_REPL_MAX      4
149#define _POSIX_SYMLINK_MAX      255
150#define _POSIX_SYMLOOP_MAX      8
151#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
152#define _POSIX_THREAD_KEYS_MAX  128
153#define _POSIX_THREAD_THREADS_MAX 64
154#define _POSIX_TIMER_MAX        32
155#define _POSIX_TRACE_EVENT_NAME_MAX 30
156#define _POSIX_TRACE_NAME_MAX   8
157#define _POSIX_TRACE_SYS_MAX    8
158#define _POSIX_TRACE_USER_EVENT_MAX 32
159#define _POSIX_TTY_NAME_MAX     9
160#define _POSIX_TZNAME_MAX       6
161#define _POSIX2_BC_BASE_MAX     99
162#define _POSIX2_BC_DIM_MAX      2048
163#define _POSIX2_BC_SCALE_MAX    99
164#define _POSIX2_BC_STRING_MAX   1000
165#define _POSIX2_CHARCLASS_NAME_MAX 14
166#define _POSIX2_COLL_WEIGHTS_MAX 2
167#define _POSIX2_EXPR_NEST_MAX   32
168#define _POSIX2_LINE_MAX        2048
169#define _POSIX2_RE_DUP_MAX      255
170
171#define _XOPEN_IOV_MAX          16
172#define _XOPEN_NAME_MAX         255
173#define _XOPEN_PATH_MAX         1024
174
175#endif
176