b266f6522f
LINE_MAX is a bad idea from the 1970s that we've ignored until now, but there's already one hack in the AOSP tree (external/ltp) to work around its absence, and kselftests would need another. Both uses are bad code, but bad code exists, and iOS/macOS and musl/glibc all have the same 2048 value, and it is in POSIX, so at least it's consistent idiocy. Hopefully we're not encouraging more of it! Bug: https://github.com/llvm/llvm-project/issues/88119 Change-Id: Ief219c3fe20b3d95da7040c4b9411f997b1c0470
225 lines
6.7 KiB
C
225 lines
6.7 KiB
C
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*/
|
|
|
|
#include <limits.h>
|
|
|
|
#include "header_checks.h"
|
|
|
|
static void limits_h() {
|
|
// These are only defined if they're constants.
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(AIO_LISTIO_MAX);
|
|
MACRO(AIO_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(AIO_PRIO_DELTA_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__)
|
|
MACRO(ARG_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(ATEXIT_MAX);
|
|
MACRO(CHILD_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__)
|
|
MACRO(DELAYTIMER_MAX);
|
|
#endif
|
|
MACRO(HOST_NAME_MAX);
|
|
MACRO(IOV_MAX);
|
|
MACRO(LOGIN_NAME_MAX);
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(MQ_OPEN_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__)
|
|
MACRO(MQ_PRIO_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(OPEN_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__)
|
|
MACRO(PAGESIZE);
|
|
MACRO(PAGE_SIZE);
|
|
#endif
|
|
MACRO(PTHREAD_DESTRUCTOR_ITERATIONS);
|
|
MACRO(PTHREAD_KEYS_MAX);
|
|
#if !defined(__BIONIC__)
|
|
MACRO(PTHREAD_STACK_MIN);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(PTHREAD_THREADS_MAX);
|
|
#endif
|
|
#if !defined(ANDROID_HOST_MUSL)
|
|
MACRO(RTSIG_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__)
|
|
MACRO(SEM_NSEMS_MAX);
|
|
#endif
|
|
MACRO(SEM_VALUE_MAX);
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(SIGQUEUE_MAX);
|
|
MACRO(SS_REPL_MAX);
|
|
MACRO(STREAM_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__)
|
|
MACRO(SYMLOOP_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(TIMER_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__)
|
|
MACRO(TTY_NAME_MAX);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__)
|
|
MACRO(TZNAME_MAX);
|
|
#endif
|
|
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__)
|
|
MACRO(FILESIZEBITS);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(LINK_MAX);
|
|
#endif
|
|
#if !defined(ANDROID_HOST_MUSL)
|
|
MACRO(MAX_CANON);
|
|
MACRO(MAX_INPUT);
|
|
#endif
|
|
MACRO(NAME_MAX);
|
|
MACRO(PATH_MAX);
|
|
MACRO(PIPE_BUF);
|
|
#if 0 // No libc has these.
|
|
MACRO(POSIX_ALLOC_SIZE_MIN);
|
|
MACRO(POSIX_REC_INCR_XFER_SIZE);
|
|
MACRO(POSIX_REC_MAX_XFER_SIZE);
|
|
MACRO(POSIX_REC_MIN_XFER_SIZE);
|
|
MACRO(POSIX_REC_XFER_ALIGN);
|
|
#endif
|
|
#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
|
|
MACRO(SYMLINK_MAX);
|
|
#endif
|
|
|
|
#if !defined(__BIONIC__)
|
|
MACRO(BC_BASE_MAX);
|
|
MACRO(BC_DIM_MAX);
|
|
MACRO(BC_SCALE_MAX);
|
|
MACRO(BC_STRING_MAX);
|
|
MACRO(CHARCLASS_NAME_MAX);
|
|
MACRO(COLL_WEIGHTS_MAX);
|
|
MACRO(EXPR_NEST_MAX);
|
|
MACRO(NGROUPS_MAX);
|
|
MACRO(RE_DUP_MAX);
|
|
#endif
|
|
MACRO(LINE_MAX);
|
|
|
|
MACRO_VALUE(_POSIX_CLOCKRES_MIN, 20000000);
|
|
|
|
MACRO_VALUE(_POSIX_AIO_LISTIO_MAX, 2);
|
|
MACRO_VALUE(_POSIX_AIO_MAX, 1);
|
|
MACRO_VALUE(_POSIX_ARG_MAX, 4096);
|
|
MACRO_VALUE(_POSIX_CHILD_MAX, 25);
|
|
MACRO_VALUE(_POSIX_DELAYTIMER_MAX, 32);
|
|
MACRO_VALUE(_POSIX_HOST_NAME_MAX, 255);
|
|
MACRO_VALUE(_POSIX_LINK_MAX, 8);
|
|
MACRO_VALUE(_POSIX_LOGIN_NAME_MAX, 9);
|
|
MACRO_VALUE(_POSIX_MAX_CANON, 255);
|
|
MACRO_VALUE(_POSIX_MAX_INPUT, 255);
|
|
MACRO_VALUE(_POSIX_MQ_OPEN_MAX, 8);
|
|
MACRO_VALUE(_POSIX_MQ_PRIO_MAX, 32);
|
|
MACRO_VALUE(_POSIX_NAME_MAX, 14);
|
|
MACRO_VALUE(_POSIX_NGROUPS_MAX, 8);
|
|
MACRO_VALUE(_POSIX_OPEN_MAX, 20);
|
|
MACRO_VALUE(_POSIX_PATH_MAX, 256);
|
|
MACRO_VALUE(_POSIX_PIPE_BUF, 512);
|
|
MACRO_VALUE(_POSIX_RE_DUP_MAX, 255);
|
|
MACRO_VALUE(_POSIX_RTSIG_MAX, 8);
|
|
MACRO_VALUE(_POSIX_SEM_NSEMS_MAX, 256);
|
|
MACRO_VALUE(_POSIX_SEM_VALUE_MAX, 32767);
|
|
MACRO_VALUE(_POSIX_SIGQUEUE_MAX, 32);
|
|
MACRO_VALUE(_POSIX_SSIZE_MAX, 32767);
|
|
#if !defined(__GLIBC__)
|
|
MACRO_VALUE(_POSIX_SS_REPL_MAX, 4);
|
|
#endif
|
|
MACRO_VALUE(_POSIX_STREAM_MAX, 8);
|
|
MACRO_VALUE(_POSIX_SYMLINK_MAX, 255);
|
|
MACRO_VALUE(_POSIX_SYMLOOP_MAX, 8);
|
|
MACRO_VALUE(_POSIX_THREAD_DESTRUCTOR_ITERATIONS, 4);
|
|
MACRO_VALUE(_POSIX_THREAD_KEYS_MAX, 128);
|
|
MACRO_VALUE(_POSIX_THREAD_THREADS_MAX, 64);
|
|
MACRO_VALUE(_POSIX_TIMER_MAX, 32);
|
|
#if !defined(__GLIBC__)
|
|
MACRO_VALUE(_POSIX_TRACE_EVENT_NAME_MAX, 30);
|
|
MACRO_VALUE(_POSIX_TRACE_NAME_MAX, 8);
|
|
MACRO_VALUE(_POSIX_TRACE_SYS_MAX, 8);
|
|
MACRO_VALUE(_POSIX_TRACE_USER_EVENT_MAX, 32);
|
|
#endif
|
|
MACRO_VALUE(_POSIX_TTY_NAME_MAX, 9);
|
|
MACRO_VALUE(_POSIX_TZNAME_MAX, 6);
|
|
MACRO_VALUE(_POSIX2_BC_BASE_MAX, 99);
|
|
MACRO_VALUE(_POSIX2_BC_DIM_MAX, 2048);
|
|
MACRO_VALUE(_POSIX2_BC_SCALE_MAX, 99);
|
|
MACRO_VALUE(_POSIX2_BC_STRING_MAX, 1000);
|
|
MACRO_VALUE(_POSIX2_CHARCLASS_NAME_MAX, 14);
|
|
MACRO_VALUE(_POSIX2_COLL_WEIGHTS_MAX, 2);
|
|
MACRO_VALUE(_POSIX2_EXPR_NEST_MAX, 32);
|
|
MACRO_VALUE(_POSIX2_LINE_MAX, 2048);
|
|
MACRO_VALUE(_POSIX2_RE_DUP_MAX, 255);
|
|
#if !defined(__GLIBC__)
|
|
MACRO_VALUE(_XOPEN_IOV_MAX, 16);
|
|
MACRO_VALUE(_XOPEN_NAME_MAX, 255);
|
|
MACRO_VALUE(_XOPEN_PATH_MAX, 1024);
|
|
#endif
|
|
|
|
MACRO_VALUE(CHAR_BIT, 8);
|
|
MACRO(CHAR_MAX);
|
|
MACRO(CHAR_MIN);
|
|
MACRO(INT_MAX);
|
|
MACRO(INT_MIN);
|
|
MACRO(LLONG_MAX);
|
|
MACRO(LLONG_MIN);
|
|
MACRO(LONG_BIT);
|
|
MACRO(LONG_MAX);
|
|
MACRO(LONG_MIN);
|
|
MACRO(MB_LEN_MAX);
|
|
MACRO_VALUE(SCHAR_MAX, 127);
|
|
MACRO_VALUE(SCHAR_MIN, -128);
|
|
MACRO(SHRT_MAX);
|
|
MACRO(SHRT_MIN);
|
|
MACRO(SSIZE_MAX);
|
|
MACRO_VALUE(UCHAR_MAX, 255);
|
|
MACRO(UINT_MAX);
|
|
MACRO(ULLONG_MAX);
|
|
MACRO(ULONG_MAX);
|
|
MACRO(USHRT_MAX);
|
|
MACRO(WORD_BIT);
|
|
|
|
MACRO(NL_ARGMAX);
|
|
MACRO(NL_LANGMAX);
|
|
MACRO(NL_MSGMAX);
|
|
MACRO(NL_SETMAX);
|
|
MACRO(NL_TEXTMAX);
|
|
MACRO(NZERO);
|
|
}
|