1/*
2 * Copyright 2001-2020 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _LIBC_LIMITS_H_
6#define _LIBC_LIMITS_H_
7	/* Note: The header guard is checked in gcc's limits.h. */
8
9
10#include <config/types.h>
11
12#include <float.h>		/* for DBL_DIG, FLT_DIG, etc */
13
14#include __HAIKU_ARCH_HEADER(limits.h)
15
16
17#define LONGLONG_MIN    (-9223372036854775807LL - 1)  /* these are Be specific */
18#define LONGLONG_MAX    (9223372036854775807LL)
19#define ULONGLONG_MAX   (0xffffffffffffffffULL)
20
21#define	ULLONG_MAX		ULONGLONG_MAX
22#define	LLONG_MAX		LONGLONG_MAX
23#define	LLONG_MIN		LONGLONG_MIN
24
25#define MB_LEN_MAX		16
26
27#define OFF_MAX			LLONG_MAX
28#define OFF_MIN			LLONG_MIN
29
30#define ARG_MAX			 		(128 * 1024)
31#define ATEXIT_MAX			 	(32)
32#define CHILD_MAX				(1024)
33#define IOV_MAX					(1024)
34#define FILESIZEBITS			(64)
35#define HOST_NAME_MAX			(255)
36#define LINE_MAX				(2048)
37#define LINK_MAX				(1)
38#define LOGIN_NAME_MAX			(32)
39#define MAX_CANON		   		(255)
40#define MAX_INPUT				(255)
41#define NAME_MAX				(256)
42#define NGROUPS_MAX		 		(32)
43#define OPEN_MAX				(128)
44#define PATH_MAX				(1024)
45#define PIPE_BUF				(4 * 1024)
46#define PIPE_MAX				(512)
47#define PTHREAD_KEYS_MAX		(256)
48#define PTHREAD_STACK_MIN		(2 * PAGESIZE)
49#define PTHREAD_DESTRUCTOR_ITERATIONS	(4)
50#define SSIZE_MAX		  		__HAIKU_SADDR_MAX
51#define TTY_NAME_MAX			(256)
52#define TZNAME_MAX		  		(32)
53#define	SYMLINK_MAX				(1024)
54#define	SYMLOOP_MAX				(16)
55
56#define _POSIX_ARG_MAX	  		(128 * 1024)
57#define _POSIX_CHILD_MAX		(1024)
58#define _POSIX_HOST_NAME_MAX	(255)
59#define _POSIX_LINK_MAX	 		(1)
60#define _POSIX_LOGIN_NAME_MAX	(9)
61#define _POSIX_MAX_CANON		(255)
62#define _POSIX_MAX_INPUT		(255)
63#define _POSIX_NAME_MAX	 		(255)
64#define _POSIX_NGROUPS_MAX  	(8)
65#define _POSIX_OPEN_MAX	 		(128)
66#define _POSIX_PATH_MAX	 		(1024)
67#define _POSIX_PIPE_BUF	 		(512)
68#define _POSIX_SSIZE_MAX		__HAIKU_SADDR_MAX
69#define _POSIX_STREAM_MAX   	(8)
70#define _POSIX_TTY_NAME_MAX		(256)
71#define _POSIX_TZNAME_MAX   	(3)
72#define _POSIX_SEM_VALUE_MAX	INT_MAX
73#define	_POSIX_SIGQUEUE_MAX		32
74#define _POSIX_RTSIG_MAX		8
75#define _POSIX_CLOCKRES_MIN		20000000
76#define _POSIX_TIMER_MAX		32
77#define _POSIX_DELAYTIMER_MAX	32
78#define _POSIX_SEM_NSEMS_MAX	(256)
79
80#define _POSIX2_LINE_MAX		(2048)
81
82#define	BC_BASE_MAX				(99)
83#define BC_DIM_MAX				(2048)
84#define BC_SCALE_MAX			(99)
85#define BC_STRING_MAX			(1000)
86
87
88#define COLL_WEIGHTS_MAX		(10)
89#define	EXPR_NEST_MAX			(32)
90#define	LINE_MAX				(2048)
91
92#define MQ_OPEN_MAX				(0) /* MSG */
93#define MQ_PRIO_MAX				(0) /* MSG */
94
95#define	RE_DUP_MAX				(0x7fff)
96
97#ifdef _XOPEN_SOURCE
98/* The XSI name for PAGESIZE, with extra underscore included. Only define if
99 * _XOPEN_SOURCE was requested, otherwise it could conflict with the application.
100 */
101#define PAGE_SIZE				PAGESIZE
102/* XSI extension: Default process priority. This is used by the implementation
103 * of getpriority(), setpriority() and nice(). */
104#define NZERO					20
105#endif
106
107/* _GCC_LIMITS_H_ is defined by GCC's internal limits.h to avoid
108 * collisions with any defines in this file.
109 */
110#ifndef _GCC_LIMITS_H_
111#	include_next <limits.h>
112#endif
113
114#endif /* _LIBC_LIMITS_H_ */
115