limits.h 4.2 KB
Newer Older
R
Rich Felker 已提交
1 2 3
#ifndef _LIMITS_H
#define _LIMITS_H

4 5 6 7
#ifdef __ICCARM__ /* for iar */
#include_next <limits.h>
#else

8 9
#include <features.h>

10
#include <bits/alltypes.h> /* __LONG_MAX */
R
Rich Felker 已提交
11

12 13
/* Support signed or unsigned plain-char */

14
#if '\xff' > 0
15 16 17 18 19 20 21
#define CHAR_MIN 0
#define CHAR_MAX 255
#else
#define CHAR_MIN (-128)
#define CHAR_MAX 127
#endif

R
Rich Felker 已提交
22 23 24 25
#define CHAR_BIT 8
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 255
26 27 28 29 30 31 32
#define SHRT_MIN  (-1-0x7fff)
#define SHRT_MAX  0x7fff
#define USHRT_MAX 0xffff
#define INT_MIN  (-1-0x7fffffff)
#define INT_MAX  0x7fffffff
#define UINT_MAX 0xffffffffU
#define LONG_MIN (-LONG_MAX-1)
33
#define LONG_MAX __LONG_MAX
34 35
#define ULONG_MAX (2UL*LONG_MAX+1)
#define LLONG_MIN (-LLONG_MAX-1)
36
#define LLONG_MAX  0x7fffffffffffffffLL
37
#define ULLONG_MAX (2ULL*LLONG_MAX+1)
R
Rich Felker 已提交
38 39

#define MB_LEN_MAX 4
40 41

#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
42
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
43

44 45
#include <bits/limits.h>

46 47
#define PIPE_BUF 4096
#define FILESIZEBITS 64
48
#ifndef NAME_MAX
49
#define NAME_MAX 255
50
#endif
51 52 53 54 55 56
#define PATH_MAX 4096
#define NGROUPS_MAX 32
#define ARG_MAX 131072
#define IOV_MAX 1024
#define SYMLOOP_MAX 40
#define WORD_BIT 32
57
#define SSIZE_MAX LONG_MAX
R
Rich Felker 已提交
58
#define TZNAME_MAX 6
R
Rich Felker 已提交
59
#define TTY_NAME_MAX 32
R
Rich Felker 已提交
60 61
#define HOST_NAME_MAX 255

62 63 64 65 66 67
#if LONG_MAX == 0x7fffffffL
#define LONG_BIT 32
#else
#define LONG_BIT 64
#endif

R
Rich Felker 已提交
68 69
/* Implementation choices... */

70 71
#define PTHREAD_KEYS_MAX 128
#define PTHREAD_STACK_MIN 2048
72
#define PTHREAD_DESTRUCTOR_ITERATIONS 4
73
#define SEM_VALUE_MAX 0x7fffffff
74
#define SEM_NSEMS_MAX 256
R
Rich Felker 已提交
75
#define DELAYTIMER_MAX 0x7fffffff
R
Rich Felker 已提交
76
#define MQ_PRIO_MAX 32768
R
Rich Felker 已提交
77
#define LOGIN_NAME_MAX 256
R
Rich Felker 已提交
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

/* Arbitrary numbers... */

#define BC_BASE_MAX 99
#define BC_DIM_MAX 2048
#define BC_SCALE_MAX 99
#define BC_STRING_MAX 1000
#define CHARCLASS_NAME_MAX 14
#define COLL_WEIGHTS_MAX 2
#define EXPR_NEST_MAX 32
#define LINE_MAX 4096
#define RE_DUP_MAX 255

#define NL_ARGMAX 9
#define NL_MSGMAX 32767
#define NL_SETMAX 255
#define NL_TEXTMAX 2048

96 97
#endif

98 99 100 101 102 103 104 105 106 107
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)

#ifdef PAGESIZE
#define PAGE_SIZE PAGESIZE
#endif
#define NZERO 20
#define NL_LANGMAX 32

#endif

108 109 110 111 112 113 114
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)

#define NL_NMAX 16

#endif

R
Rich Felker 已提交
115 116 117 118 119 120 121
/* POSIX/SUS requirements follow. These numbers come directly
 * from SUS and have nothing to do with the host system. */

#define _POSIX_AIO_LISTIO_MAX   2
#define _POSIX_AIO_MAX          1
#define _POSIX_ARG_MAX          4096
#define _POSIX_CHILD_MAX        25
122
#define _POSIX_CLOCKRES_MIN     20000000
R
Rich Felker 已提交
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
#define _POSIX_DELAYTIMER_MAX   32
#define _POSIX_HOST_NAME_MAX    255
#define _POSIX_LINK_MAX         8
#define _POSIX_LOGIN_NAME_MAX   9
#define _POSIX_MAX_CANON        255
#define _POSIX_MAX_INPUT        255
#define _POSIX_MQ_OPEN_MAX      8
#define _POSIX_MQ_PRIO_MAX      32
#define _POSIX_NAME_MAX         14
#define _POSIX_NGROUPS_MAX      8
#define _POSIX_OPEN_MAX         20
#define _POSIX_PATH_MAX         256
#define _POSIX_PIPE_BUF         512
#define _POSIX_RE_DUP_MAX       255
#define _POSIX_RTSIG_MAX        8
#define _POSIX_SEM_NSEMS_MAX    256
#define _POSIX_SEM_VALUE_MAX    32767
#define _POSIX_SIGQUEUE_MAX     32
#define _POSIX_SSIZE_MAX        32767
#define _POSIX_STREAM_MAX       8
#define _POSIX_SS_REPL_MAX      4
#define _POSIX_SYMLINK_MAX      255
#define _POSIX_SYMLOOP_MAX      8
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
#define _POSIX_THREAD_KEYS_MAX  128
#define _POSIX_THREAD_THREADS_MAX 64
#define _POSIX_TIMER_MAX        32
#define _POSIX_TRACE_EVENT_NAME_MAX 30
#define _POSIX_TRACE_NAME_MAX   8
#define _POSIX_TRACE_SYS_MAX    8
#define _POSIX_TRACE_USER_EVENT_MAX 32
#define _POSIX_TTY_NAME_MAX     9
#define _POSIX_TZNAME_MAX       6
#define _POSIX2_BC_BASE_MAX     99
#define _POSIX2_BC_DIM_MAX      2048
#define _POSIX2_BC_SCALE_MAX    99
#define _POSIX2_BC_STRING_MAX   1000
#define _POSIX2_CHARCLASS_NAME_MAX 14
#define _POSIX2_COLL_WEIGHTS_MAX 2
#define _POSIX2_EXPR_NEST_MAX   32
#define _POSIX2_LINE_MAX        2048
#define _POSIX2_RE_DUP_MAX      255

#define _XOPEN_IOV_MAX          16
#define _XOPEN_NAME_MAX         255
#define _XOPEN_PATH_MAX         1024

170
#endif /* __ICCARM__ */
R
Rich Felker 已提交
171
#endif