172 lines
5.3 KiB
Groff
172 lines
5.3 KiB
Groff
.\" $NetBSD: limits.3,v 1.2 2011/08/29 16:56:32 njoly Exp $
|
|
.\"
|
|
.\" Copyright (c) 2011 Jukka Ruohonen <jruohonen@iki.fi>
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
|
.\" by Jukka Ruohonen.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
|
.\"
|
|
.Dd August 9, 2011
|
|
.Dt LIMITS 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm limits
|
|
.Nd standard limits
|
|
.Sh SYNOPSIS
|
|
.In limits.h
|
|
.Sh DESCRIPTION
|
|
The
|
|
.In limits.h
|
|
header defines various compile-time and runtime limits.
|
|
These can be grouped into three categories:
|
|
.Bl -enum -offset indent
|
|
.It
|
|
Compile-time limits defined in a header file.
|
|
.It
|
|
Runtime system limits that are not associated with a file or directory; see
|
|
.Xr sysconf 3 .
|
|
.It
|
|
Runtime limits that are associated with a file or directory; see
|
|
.Xr pathconf 2 .
|
|
.El
|
|
.Pp
|
|
The
|
|
.In limits.h
|
|
header has been standardized by at least three entities.
|
|
.Ss ISO Limits
|
|
The limits defined by the
|
|
.St -isoC-99
|
|
standard are all compile-time limits.
|
|
The numerical (integer) limits are:
|
|
.Bl -column -offset indent \
|
|
"Constant " " Type " "either SCHAR_MAX or UCHAR_MAX "
|
|
.It Sy "Constant" Ta Sy "Type" Ta Sy " Minimum value"
|
|
.It Dv CHAR_BIT Ta Va char Ta " 8"
|
|
.It Dv SCHAR_MAX Ta Va signed char Ta " 127"
|
|
.It Dv SCHAR_MIN Ta Va signed char Ta "\-127"
|
|
.It Dv UCHAR_MAX Ta Va unsigned char Ta " 255"
|
|
.Pp
|
|
.It Dv INT_MAX Ta Va int Ta " 32767"
|
|
.It Dv INT_MIN Ta Va int Ta "\-32767"
|
|
.It Dv UINT_MAX Ta Va unsigned int Ta " 65535"
|
|
.Pp
|
|
.It Dv SHRT_MIN Ta Va short Ta "\-32767"
|
|
.It Dv SHRT_MAX Ta Va short Ta " 32767"
|
|
.It Dv USHRT_MAX Ta Va unsigned short Ta " 65535"
|
|
.Pp
|
|
.It Dv LONG_MAX Ta Va long int Ta " 2147483647"
|
|
.It Dv LONG_MIN Ta Va long int Ta "\-2147483647"
|
|
.It Dv ULONG_MAX Ta Va unsigned long int Ta " 4294967295"
|
|
.Pp
|
|
.It Dv LLONG_MAX Ta Va long long int Ta " 9223372036854775807"
|
|
.It Dv LLONG_MIN Ta Va long long int Ta "\-9223372036854775807"
|
|
.It Dv ULLONG_MAX Ta Va unsigned long long int Ta " 18446744073709551615"
|
|
.Pp
|
|
.It Dv MB_LEN_MAX Ta - Ta 1
|
|
.El
|
|
.Pp
|
|
All listed limits may vary across machines and operating systems.
|
|
The standard guarantees only that the implementation-defined values are
|
|
equal or greater in absolute value to those shown.
|
|
The values permit a system with 16-bit integers
|
|
using one's complement arithmetic.
|
|
.Pp
|
|
Depending whether the system defines
|
|
.Va char
|
|
as signed or unsigned, the maximum and minimum values are:
|
|
.Bl -column -offset indent \
|
|
"Constant " " Type " "either SCHAR_MAX or UCHAR_MAX "
|
|
.It Sy "Constant" Ta Sy "Type" Ta Sy "Minimum value"
|
|
.It Dv CHAR_MAX Ta Va char Ta either Dv SCHAR_MAX or Dv UCHAR_MAX
|
|
.It Dv CHAR_MIN Ta Va char Ta either Dv SCHAR_MIN or 0
|
|
.El
|
|
.Pp
|
|
The two special cases,
|
|
.Dv CHAR_BIT
|
|
and
|
|
.Dv MB_LEN_MAX ,
|
|
define the number of bits in
|
|
.Va char
|
|
and the maximum number of bytes in a multibyte character constant,
|
|
respectively.
|
|
.Ss POSIX Limits
|
|
The
|
|
.Dv POSIX.1
|
|
standard specifies numerous limits related to the operating system.
|
|
For each limit, a separate constant prefixed with
|
|
.Dq Dv _POSIX_
|
|
defines the
|
|
.Em lowest
|
|
value that the limit is allowed to have on
|
|
.Em any
|
|
.Tn POSIX
|
|
compliant system.
|
|
For instance,
|
|
.Dv _POSIX_OPEN_MAX
|
|
defines the minimum upper bound permitted by
|
|
.Tn POSIX
|
|
for the number of files that a single process may have open at any time.
|
|
This ensures that a portable program can safely reach these limits without
|
|
prior knowledge about the actual limits used in a particular system.
|
|
.Pp
|
|
As the limits are not necessary invariant,
|
|
.Xr pathconf 2
|
|
and
|
|
.Xr sysconf 3
|
|
should be used to determine the actual value of a limit at runtime.
|
|
The manual pages of these two functions also contain a more detailed
|
|
description of the limits available in
|
|
.Nx .
|
|
.Ss XSI Limits
|
|
Also the X/Open System Interface Extension
|
|
.Pq Dv XSI
|
|
specifies few limits.
|
|
In
|
|
.Nx
|
|
these are limited to
|
|
.Dv LONG_BIT
|
|
(the number of bits in
|
|
.Vt long ) ,
|
|
.Dv WORD_BIT
|
|
(the number of bits in a
|
|
.Dq word ) ,
|
|
and few limits related to
|
|
.Vt float
|
|
and
|
|
.Vt double .
|
|
.Sh SEE ALSO
|
|
.Xr getconf 1 ,
|
|
.Xr pathconf 2 ,
|
|
.Xr sysconf 3 ,
|
|
.Xr types 3 ,
|
|
.Xr unistd 3
|
|
.Rs
|
|
.%A Richard W. Stevens
|
|
.%A Stephen A. Rago
|
|
.%B Advanced Programming in the UNIX Environment
|
|
.%V Second Edition
|
|
.%D 2005
|
|
.%I Addison-Wesley
|
|
.Re
|