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#ifdef __wasilibc_unmodified_upstream /* WASI has no pipes */
 43#define PIPE_BUF 4096
 44#endif
 45#define FILESIZEBITS 64
 46#ifndef NAME_MAX
 47#define NAME_MAX 255
 48#endif
 49#define PATH_MAX 4096
 50#define NGROUPS_MAX 32
 51#define ARG_MAX 131072
 52#define IOV_MAX 1024
 53#define SYMLOOP_MAX 40
 54#define WORD_BIT 32
 55#define SSIZE_MAX LONG_MAX
 56#define TZNAME_MAX 6
 57#define TTY_NAME_MAX 32
 58#define HOST_NAME_MAX 255
 59
 60#if LONG_MAX == 0x7fffffffL
 61#define LONG_BIT 32
 62#else
 63#define LONG_BIT 64
 64#endif
 65
 66/* Implementation choices... */
 67
 68#define PTHREAD_KEYS_MAX 128
 69#define PTHREAD_STACK_MIN 2048
 70#define PTHREAD_DESTRUCTOR_ITERATIONS 4
 71#if defined(__wasilibc_unmodified_upstream) || defined(_REENTRANT)
 72#define SEM_VALUE_MAX 0x7fffffff
 73#define SEM_NSEMS_MAX 256
 74#endif
 75#define DELAYTIMER_MAX 0x7fffffff
 76#ifdef __wasilibc_unmodified_upstream /* WASI has no mq */
 77#define MQ_PRIO_MAX 32768
 78#endif
 79#ifdef __wasilibc_unmodified_upstream /* WASI has no usernames */
 80#define LOGIN_NAME_MAX 256
 81#endif
 82
 83/* Arbitrary numbers... */
 84
 85#ifdef __wasilibc_unmodified_upstream /* WASI has no shell commands */
 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#endif
 91#define CHARCLASS_NAME_MAX 14
 92#define COLL_WEIGHTS_MAX 2
 93#ifdef __wasilibc_unmodified_upstream /* WASI has no shell commands */
 94#define EXPR_NEST_MAX 32
 95#define LINE_MAX 4096
 96#endif
 97#define RE_DUP_MAX 255
 98
 99#define NL_ARGMAX 9
100#define NL_MSGMAX 32767
101#define NL_SETMAX 255
102#define NL_TEXTMAX 2048
103
104#endif
105
106#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
107
108#ifdef PAGESIZE
109#define PAGE_SIZE PAGESIZE
110#endif
111#define NZERO 20
112#define NL_LANGMAX 32
113
114#endif
115
116#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
117 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
118
119#define NL_NMAX 16
120
121#endif
122
123/* POSIX/SUS requirements follow. These numbers come directly
124 * from SUS and have nothing to do with the host system. */
125
126#define _POSIX_AIO_LISTIO_MAX   2
127#define _POSIX_AIO_MAX          1
128#define _POSIX_ARG_MAX          4096
129#define _POSIX_CHILD_MAX        25
130#define _POSIX_CLOCKRES_MIN     20000000
131#define _POSIX_DELAYTIMER_MAX   32
132#define _POSIX_HOST_NAME_MAX    255
133#define _POSIX_LINK_MAX         8
134#define _POSIX_LOGIN_NAME_MAX   9
135#define _POSIX_MAX_CANON        255
136#define _POSIX_MAX_INPUT        255
137#define _POSIX_MQ_OPEN_MAX      8
138#define _POSIX_MQ_PRIO_MAX      32
139#define _POSIX_NAME_MAX         14
140#define _POSIX_NGROUPS_MAX      8
141#define _POSIX_OPEN_MAX         20
142#define _POSIX_PATH_MAX         256
143#define _POSIX_PIPE_BUF         512
144#define _POSIX_RE_DUP_MAX       255
145#define _POSIX_RTSIG_MAX        8
146#define _POSIX_SEM_NSEMS_MAX    256
147#define _POSIX_SEM_VALUE_MAX    32767
148#define _POSIX_SIGQUEUE_MAX     32
149#define _POSIX_SSIZE_MAX        32767
150#define _POSIX_STREAM_MAX       8
151#define _POSIX_SS_REPL_MAX      4
152#define _POSIX_SYMLINK_MAX      255
153#define _POSIX_SYMLOOP_MAX      8
154#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
155#define _POSIX_THREAD_KEYS_MAX  128
156#define _POSIX_THREAD_THREADS_MAX 64
157#define _POSIX_TIMER_MAX        32
158#define _POSIX_TRACE_EVENT_NAME_MAX 30
159#define _POSIX_TRACE_NAME_MAX   8
160#define _POSIX_TRACE_SYS_MAX    8
161#define _POSIX_TRACE_USER_EVENT_MAX 32
162#define _POSIX_TTY_NAME_MAX     9
163#define _POSIX_TZNAME_MAX       6
164#define _POSIX2_BC_BASE_MAX     99
165#define _POSIX2_BC_DIM_MAX      2048
166#define _POSIX2_BC_SCALE_MAX    99
167#define _POSIX2_BC_STRING_MAX   1000
168#define _POSIX2_CHARCLASS_NAME_MAX 14
169#define _POSIX2_COLL_WEIGHTS_MAX 2
170#define _POSIX2_EXPR_NEST_MAX   32
171#define _POSIX2_LINE_MAX        2048
172#define _POSIX2_RE_DUP_MAX      255
173
174#define _XOPEN_IOV_MAX          16
175#define _XOPEN_NAME_MAX         255
176#define _XOPEN_PATH_MAX         1024
177
178#endif