111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*	$OpenBSD: limits.h,v 1.13 2005/12/31 19:29:38 millert Exp $	*/
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*	$NetBSD: limits.h,v 1.7 1994/10/26 00:56:00 cgd Exp $	*/
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1988 The Regents of the University of California.
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * All rights reserved.
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Redistribution and use in source and binary forms, with or without
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modification, are permitted provided that the following conditions
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * are met:
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1. Redistributions of source code must retain the above copyright
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    notice, this list of conditions and the following disclaimer.
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 2. Redistributions in binary form must reproduce the above copyright
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    notice, this list of conditions and the following disclaimer in the
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    documentation and/or other materials provided with the distribution.
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 3. Neither the name of the University nor the names of its contributors
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    may be used to endorse or promote products derived from this software
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    without specific prior written permission.
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * SUCH DAMAGE.
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *	@(#)limits.h	5.9 (Berkeley) 4/3/91
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LIMITS_H_
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_LIMITS_H_
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/cdefs.h>
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __POSIX_VISIBLE
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_ARG_MAX		4096
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_CHILD_MAX	25
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_LINK_MAX		8
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_MAX_CANON	255
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_MAX_INPUT	255
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_NAME_MAX		14
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_NGROUPS_MAX	0
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_OPEN_MAX		16
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_PATH_MAX		256
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_PIPE_BUF		512
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX_RE_DUP_MAX	255
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_SSIZE_MAX	32767
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_STREAM_MAX	8
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_SYMLINK_MAX	255
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_SYMLOOP_MAX	8
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_TZNAME_MAX	3
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_BC_BASE_MAX	99
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_BC_DIM_MAX	2048
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_BC_SCALE_MAX	99
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_BC_STRING_MAX	1000
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_COLL_WEIGHTS_MAX	2
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_EXPR_NEST_MAX	32
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_LINE_MAX	2048
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_POSIX2_RE_DUP_MAX	_POSIX_RE_DUP_MAX
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __POSIX_VISIBLE >= 200112
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_TTY_NAME_MAX	9	/* includes trailing NUL */
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _POSIX_LOGIN_NAME_MAX	9	/* includes trailing NUL */
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __POSIX_VISIBLE >= 200112 */
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __POSIX_VISIBLE */
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __XPG_VISIBLE
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define PASS_MAX		128	/* _PASSWORD_LEN from <pwd.h> */
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NL_ARGMAX		9
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NL_LANGMAX		14
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NL_MSGMAX		32767
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NL_NMAX			1
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NL_SETMAX		255
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NL_TEXTMAX		255
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TMP_MAX                 308915776
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __XPG_VISIBLE */
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/limits.h>
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __POSIX_VISIBLE
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/syslimits.h>
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* GLibc compatibility definitions.
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert   Note that these are defined by GCC's <limits.h>
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert   only when __GNU_LIBRARY__ is defined, i.e. when
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert   targetting GLibc. */
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef LONG_LONG_MIN
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define LONG_LONG_MIN  LLONG_MIN
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef LONG_LONG_MAX
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define LONG_LONG_MAX  LLONG_MAX
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef ULONG_LONG_MAX
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ULONG_LONG_MAX  ULLONG_MAX
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* BSD compatibility definitions. */
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __BSD_VISIBLE
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SIZE_T_MAX ULONG_MAX
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __BSD_VISIBLE */
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SSIZE_MAX LONG_MAX
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MB_LEN_MAX 4
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* New code should use sysconf(_SC_PAGE_SIZE) instead. */
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef PAGE_SIZE
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define PAGE_SIZE 4096
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef PAGESIZE
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define  PAGESIZE  PAGE_SIZE
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* glibc's PAGE_MASK is the bitwise negation of BSD's! TODO: remove? */
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define PAGE_MASK (~(PAGE_SIZE - 1))
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* !_LIMITS_H_ */
129