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