limits.h raw

   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
 167