VSF Documented
limits.h
Go to the documentation of this file.
1#ifndef __SIMPLE_LIBC_LIMITS_H__
2#define __SIMPLE_LIBC_LIMITS_H__
3
4// IMPORTANT: DO NOT use sizeof in MACROs below,
5// because sizeof will not get correct value in preprocess stage.
6
7#define CHAR_BIT 8
8#define LONG_BIT 32
9#define WORD_BIT 32
10
11#define SCHAR_MAX 127
12#define SHRT_MAX 32767
13#define INT_MAX 2147483647
14#define LONG_MAX 2147483647L
15#define LLONG_MAX 9223372036854775807LL
16
17#define UCHAR_MAX (2 * SCHAR_MAX + 1)
18#define USHRT_MAX (2 * SHRT_MAX + 1)
19#define UINT_MAX (2U * INT_MAX + 1U)
20#define ULONG_MAX (2UL * LONG_MAX + 1UL)
21#define ULLONG_MAX (2ULL * LLONG_MAX + 1ULL)
22
23#define CHAR_MIN SCHAR_MIN
24#define CHAR_MAX SCHAR_MAX
25
26#define SCHAR_MIN (-SCHAR_MAX - 1)
27#define SHRT_MIN (-SHRT_MAX - 1)
28#define INT_MIN (-INT_MAX - 1)
29#define LONG_MIN (-LONG_MAX - 1)
30#define LLONG_MIN (-LLONG_MAX - 1)
31
32#define LONG_LONG_MAX LLONG_MAX
33#define LONG_LONG_MIN LLONG_MIN
34#define ULONG_LONG_MAX ULLONG_MAX
35
36#define SSIZE_MAX _POSIX_SSIZE_MAX
37
38#define MB_LEN_MAX 16
39
40// POSIX.1
41#define _POSIX_AIO_LISTIO_MAX 2
42#define _POSIX_AIO_MAX 1
43#define _POSIX_ARG_MAX 4096
44#define _POSIX_CHILD_MAX 6
45#define _POSIX_DELAYTIMER_MAX 32
46#define _POSIX_LINK_MAX 8
47#define _POSIX_MAX_CANON 255
48#define _POSIX_MAX_INPUT 255
49#define _POSIX_MQ_OPEN_MAX 8
50#define _POSIX_MQ_PRIO_MAX 32
51#define _POSIX_NAME_MAX 14
52#define _POSIX_NGROUPS_MAX 0
53#define _POSIX_OPEN_MAX 16
54#define _POSIX_PATH_MAX 255
55#define _POSIX_PIPE_BUF 512
56#define _POSIX_RTSIG_MAX 8
57#define _POSIX_SEM_NSEMS_MAX 256
58#define _POSIX_SEM_VALUE_MAX 32767
59#define _POSIX_SIGQUEUE_MAX 32
60#define _POSIX_SSIZE_MAX 32767
61#define _POSIX_STREAM_MAX 8
62#define _POSIX_TIMER_MAX 32
63#define _POSIX_TZNAME_MAX 3
64#define _POSIX_LOGIN_NAME_MAX 9
65#define _POSIX_THREAD_DESTRUCTOR_INTERATION 4
66#define _POSIX_THREAD_KEYS_MAX 128
67#define _POSIX_THREAD_THREADS_MAX 64
68#define _POSIX_TTY_NAME_MAX 9
69
70// POSIX.2
71
72#define _POSIX2_BC_BASE_MAX 99
73#define _POSIX2_BC_DIM_MAX 2048
74#define _POSIX2_BC_SCALE_MAX 99
75#define _POSIX2_BC_STRING_MAX 1000
76#define _POSIX2_COLL_WEIGHTS_MAX 2
77#define _POSIX2_EXPR_NEST_MAX 32
78#define _POSIX2_LINE_MAX 2048
79#define _POSIX2_RE_DUP_MAX 255
80#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
81#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
82#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
83#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
84#define COLL_WEIGHTS_MAX _POSIX2_COLL_WEIGHTS_MAX
85#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
86#define LINE_MAX _POSIX2_LINE_MAX
87#define RE_DUP_MAX _POSIX2_RE_DUP_MAX
88
89#endif