Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

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)

prmconfig(1)

sysconf(2)

NAME

sysconf() − get configurable system variables

SYNOPSIS

#include <unistd.h>

long sysconf(int name);

int CPU_IS_PA_RISC(long cpuvers);

DESCRIPTION

The sysconf() system call 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 for 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_KEYBITS1 _SC_CPU_KEYBITS1 Processor Extensions (see below)
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, currently, only the value IO_TYPE_CDIO
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_FSYNC _SC_FSYNC Positive if the File Synchronization option is supported (see fsync(2))
POSIX_JOB_CONTROL _SC_JOB_CONTROL Positive if the system supports POSIX job control; −1 otherwise
POSIX_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING Positive if the system supports POSIX.4 priority scheduling; −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_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO Positive if the Synchronized IO option is supported (see open(2))
POSIX_TIMERS _SC_TIMERS Positive if the system supports POSIX.4 clocks and timers; −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)
PROC_RSRC_MGR _SC_PROC_RSRC_MGR Equal to 1 if the optional HP Process Resource Management (PRM) software is installed and configured; 0 otherwise (see prmconfig(1))
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 SEC_CLASS-NONE (No DoD security level supported)
STREAM_MAX _SC_STREAM_MAX Maximum number of stdio streams that one process can have open at one time
TIMER_MAX _SC_TIMER_MAX Maximum number of POSIX.4 timers per process, if POSIX.4 timers are supported; −1 otherwise
TZNAME_MAX _SC_TZNAME_MAX Maximum number of bytes in a time zone 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 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

The CPU_IS_PA_RISC() function classifies cpuvers, a value of the CPU_VERSION variable, as to its processor family. 

The availability of architecture specific instructions is indicated by the key bit data returned by sysconf(_SC_CPU_KEYBITS1).  Upon successful completion, the data returned will be the logical OR of the defined values for the features supported. 

The possible values returned by sysconf(_SC_CPU_KEYBITS1) and their meanings are shown in the following table. 

Return Value Instruction Supported
HARITH Halfword parallel add, subtract, and average
HSHIFT Halfword parallel shift-and-add

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 nonzero if cpuvers is an HP PA-RISC processor; zero if not. 

ERRORS

If sysconf() fails, the value of errno (see errno(2)) is set to:

[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 if 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() is implemented as a macro. 

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() was 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). 

HP Process Resource Manager: prmconfig(1) in HP Process Resource Manager User’s Guide.

STANDARDS CONFORMANCE

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

Hewlett-Packard Company  —  HP-UX Release 10.20:  July 1996

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