Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sysconf(2) — HP-UX 9.10

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getconf(1)

atexit(2)

exec(2)

fork(2)

getrlimit(2)

pathconf(2)

times(2)

clock(3C)

regcomp(3C)

limits(5)

stdsyms(5)

unistd(5)

x_open(5)

sysconf(2)

NAME

sysconf − get configurable system variables

SYNOPSIS

#include <unistd.h>

long sysconf(int name);

int CPU_IS_PA_RISC(long cpuvers);

int CPU_IS_HP_MC68K(long cpuvers);

DESCRIPTION

sysconf() provides a way for applications to determine the current value of a configurable limit or variable. 

The name argument represents the system variable being queried. 

The following table lists the configuration variables whose values can be determined by calling sysconf(), and for each variable, the associated value of the name argument and the value returned:

Variable Value of name Value Returned
AES_OS_VERSION _SC_AES_OS_VERSION Version number of OSF/AES OSC supported
ARG_MAX _SC_ARG_MAX Maximum total length of the arguments for exec() in bytes, including environment data (see exec(2))
ATEXIT_MAX _SC_ATEXIT_MAX Maximum number of functions that can be registered with atexit() (see atexit(2))
BC_BASE_MAX _SC_BC_BASE_MAX Maximum ibase (input number radix) and obase (output number radix) allowed by bc (see bc(1))
BC_DIM_MAX _SC_BC_DIM_MAX Maximum number of elements in an array permitted by bc (see bc(1))
BC_SCALE_MAX _SC_BC_SCALE_MAX Maximum scale factor (number of digits to the right of the decimal point) allowed by bc (see bc(1))
BC_STRING_MAX _SC_BC_STRING_MAX Maximum length of strings allowed by bc (see bc(1))
CHILD_MAX _SC_CHILD_MAX Maximum number of simultaneous processes per user ID (see fork(2))
CLK_TCK _SC_CLK_TCK Number of clock intervals per second for times() (see times(2))
CLOCKS_PER_SEC _SC_CLOCKS_PER_SEC Number of clock ticks per second for clock() (see clock(3C))
COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX Maximum number of weights that can be assigned to an entry of the LC_COLLATE order keyword in a localedef input file (see localedef(1M))
CPU_VERSION _SC_CPU_VERSION Version of CPU architecture (see below)
EXPR_NEST_MAX _SC_EXPR_NEST_MAX Maximum parenthesis nesting level for expr expressions (see expr(1))
IO_TYPE _SC_IO_TYPE Type of I/O drivers the kernel supports (see below)
LINE_MAX _SC_LINE_MAX Maximum number of bytes in an input line (including the newline) for POSIX.2 utilities
NGROUPS_MAX _SC_NGROUPS_MAX Maximum number of simultaneous supplementary group IDs per process
OPEN_MAX _SC_OPEN_MAX Maximum number of files that one process can have open at one time
PAGE_SIZE _SC_PAGE_SIZE Kernel memory page size
PASS_MAX _SC_PASS_MAX Maximum number of significant bytes in a password
POSIX_JOB_CONTROL _SC_JOB_CONTROL Positive if the system supports POSIX job control; −1 otherwise
POSIX_SAVED_IDS _SC_SAVED_IDS Positive if each process has a saved set-user-ID and a saved set-group-ID; −1 otherwise
POSIX_VERSION _SC_VERSION Approval date of the POSIX.1 Standard (such as 199009 for POSIX.1-1990) to which the system conforms.  This value indicates the year (first four digits) and month (next two digits) that the standard was approved by the IEEE Standards Board. 
POSIX2_C_BIND _SC_2_C_BIND Equal to 1 if the POSIX.2 C Language Bindings Option is available through the c89 utility; −1 otherwise
POSIX2_C_DEV _SC_2_C_DEV Equal to 1 if the POSIX.2 C Language Development Utilities Option is supported; −1 otherwise
POSIX2_C_VERSION _SC_2_C_VERSION Current version of the POSIX.2 C Language Binding Option supported (same format as _POSIX_VERSION); −1 otherwise. 
POSIX2_FORT_DEV _SC_2_FORT_DEV Equal to 1 if the POSIX.2 FORTRAN Development Utilities Option is supported; −1 otherwise
POSIX2_FORT_RUN _SC_2_FORT_RUN Equal to 1 if the POSIX.2 Fortran Runtime Utilities Option is supported; −1 otherwise
POSIX2_LOCALEDEF _SC_2_LOCALEDEF Equal to 1 if locales can be created with the POSIX.2 localedef utility; −1 otherwise
POSIX2_SW_DEV _SC_2_SW_DEV Equal to 1 if the POSIX.2 Software Development Utilities Option is supported; −1 otherwise
POSIX2_UPE _SC_2_UPE Equal to 1 if the POSIX.2 User Portability Utilities Option is supported; −1 otherwise
POSIX2_VERSION _SC_2_VERSION Current version of POSIX.2 (same format as _POSIX_VERSION)
RE_DUP_MAX _SC_RE_DUP_MAX Maximum number of repeated occurrences of a regular expression permitted when using the interval notation \{m,n\} (see regcomp(3C))
SECURITY_CLASS _SC_SECURITY_CLASS DoD security level (see below)
STREAM_MAX _SC_STREAM_MAX Maximum number of stdio streams that one process can have open at one time
TZNAME_MAX _SC_TZNAME_MAX Maximum number of bytes in a timezone name for the TZ environment variable
XOPEN_CRYPT _SC_XOPEN_CRYPT Equal to 1 if the X/Open Encryption Feature Group is supported; −1 otherwise
XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N Equal to 1 if the X/Open Enhanced Internationalization Feature Group is supported; −1 otherwise
XOPEN_SHM _SC_XOPEN_SHM Equal to 1 if the X/Open Shared Memory Feature Group is supported; −1 otherwise
XOPEN_VERSION _SC_XOPEN_VERSION Issue number of X/Open Portability Guide supported

Some of the variables in the table are defined as constants in <limits.h> (see limits(5)). The associated values of the name argument are defined in <unistd.h>. 

The SECURITY_CLASS variable (returned by sysconf(_SC_SECURITY_CLASS)) can have the following possible values with meanings as indicated:

Value Meaning
SEC_CLASS_NONE No DoD security level supported
SEC_CLASS_C2 DoD C2 level security
SEC_CLASS_B1 DoD B1 level security

The possible values of the IO_TYPE variable (returned by sysconf(_SC_IO_TYPE)) and their meanings are:

Value Meaning
IO_TYPE_WSIO Workstation I/O (used by Series 300/400/700)
IO_TYPE_SIO Server I/O (used by Series 800)

Since the Series 700 instruction set is compatible with Series 800 but its I/O system differs, IO_TYPE can be used to detect which I/O system is present in a single executable program that can be run on either a Series 700 or a Series 800. 

The possible values of the CPU_VERSION variable (returned by sysconf(_SC_CPU_VERSION)) and their meanings are:

Value Meaning
CPU_PA_RISC1_0 HP Precision Architecture RISC Version 1.0
CPU_PA_RISC1_1 HP Precision Architecture RISC Version 1.1
CPU_HP_MC68020 Motorola MC68020
CPU_HP_MC68030 Motorola MC68030
CPU_HP_MC68040 Motorola MC68040

The CPU_IS_PA_RISC() and CPU_IS_HP_MC68K() functions classify cpuvers, a value of the CPU_VERSION variable, as to its processor family. 

RETURN VALUE

Upon successful completion, sysconf() returns the value of the named variable.  If the value of name is not valid, sysconf() returns −1 and sets errno to indicate the error.  If the variable corresponding to name is not defined, sysconf() returns −1, but does not change errno. 

CPU_IS_PA_RISC() returns positive non-zero if cpuvers is an HP PA-RISC processor; zero if not. 

CPU_IS_HP_MC68K() returns positive non-zero if cpuvers is a “Motorola MC680x0” processor; zero if not. 

ERRORS

sysconf() fails if:

[EINVAL] The value of name is not valid. 

EXAMPLES

The following example determines the number of times the system clock ticks each second:

#include <unistd.h>

long ticks;
  ...

ticks = sysconf(_SC_CLK_TCK);

The following example determines whether the current processor is an HP PA-RISC machine:

#include <unistd.h>

if (CPU_IS_PA_RISC(sysconf(_SC_CPU_VERSION)))
  ...

WARNINGS

CPU_IS_PA_RISC() and CPU_IS_HP_MC68K() are implemented as macros. 

Normally, the values returned from sysconf() do not change during the lifetime of the calling process.  However, the value of the symbolic constant _POSIX_VERSION and thus the value of sysconf(_SC_VERSION) can vary under certain circumstances.  If either of the feature test macros _POSIX1_1988 or _XPG3 is defined by the programmer prior to including <unistd.h>, the value of _POSIX_VERSION is defined as 198808, in conformance with POSIX.1-1988, FIPS 151-1, and XPG3.  Otherwise, the value of _POSIX_VERSION is defined as 199009, in conformance with POSIX.1-1990. 

Similarly, the value of the symbolic constant _XOPEN_VERSION and thus the value of sysconf(_SC_XOPEN_VERSION) can vary under certain circumstances.  If the feature test macro _XPG3 is defined by the programmer prior to including <unistd.h>, the value of _XOPEN_VERSION is defined as 3, in conformance with XPG3.  Otherwise, the value of _XOPEN_VERSION is defined as 4, in conformance with XPG4. 

See stdsyms(5) for more information about these feature test macros.

AUTHOR

sysconf() was developed by HP and POSIX. 

CPU_IS_PA_RISC() and CPU_IS_HP_MC68K() were developed by HP. 

SEE ALSO

getconf(1), atexit(2), exec(2), fork(2), getrlimit(2), pathconf(2), times(2), clock(3C), regcomp(3C), limits(5), stdsyms(5), unistd(5), x_open(5). 

STANDARDS CONFORMANCE

sysconf(): AES, XPG3, XPG4, FIPS 151-2, POSIX.1, POSIX.2

Hewlett-Packard Company  —  HP-UX Release 9.10: April 1995

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026