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