sysconf(3C)
NAME
sysconf − get configurable system variables
SYNOPSIS
#include <unistd.h>
long sysconf(int name);
DESCRIPTION
The sysconf() function provides a method for an application to determine the current value of a configurable system limit or option (variable).
The name argument represents the system variable to be queried. The following table lists the minimal set of system variables from <limits.h> and <unistd.h> that can be returned by sysconf() and the symbolic constants defined in <unistd.h> that are the corresponding values used for name on the SPARC and x86 platforms.
| Name | Return Value | Meaning |
| _SC_ARG_MAX | ARG_MAX | Max size of argv[] plus envp[] |
| _SC_BC_BASE_MAX | BC_BASE_MAX | Maximum obase values allowed |
| by bc | ||
| _SC_BC_DIM_MAX | BC_DIM_MAX | Max number of elements permitted |
| in array by bc | ||
| _SC_BC_SCALE_MAX | BC_SCALE_MAX | Max scale value allowed by bc |
| _SC_BC_STRING_MAX | BC_STRING_MAX | Max length of string constant |
| allowed by bc | ||
| _SC_CHILD_MAX | CHILD_MAX | Max processes allowed to a UID |
| _SC_CLK_TCK | CLK_TCK | Ticks per second (clock_t) |
| _SC_COLL_WEIGHTS_MAX | COLL_WEIGHTS_MAX | Max number of weights that can |
| be assigned to entry of the | ||
| LC_COLLATE order keyword in | ||
| locale definition file | ||
| _SC_EXPR_NEST_MAX | EXPR_NEST_MAX | Max number of expressions that |
| can be listed within parentheses | ||
| by expr | ||
| _SC_LINE_MAX | LINE_MAX | Max length of input line |
| _SC_NGROUPS_MAX | NGROUPS_MAX | Max simultaneous groups to which |
| one may belong | ||
| _SC_OPEN_MAX | OPEN_MAX | Max open files per process |
| _SC_PASS_MAX | PASS_MAX | Max number of significant bytes |
| in a password | ||
| _SC_2_C_BIN | _POSIX2_C_BIND | Supports the C language |
| binding option | ||
| _SC_2_C_DEV | _POSIX2_C_DEV | Supports the C language |
| development utilities option | ||
| _SC_2_C_VERSION | _POSIX2_C_VERSION | Integer value indicating version of |
| ISO POSIX-2 standard (Commands) | ||
| _SC_2_CHAR_TERM | _POSIX2_CHAR_TERM | Supports at least one terminal |
| _SC_2_FORT_DEV | _POSIX2_FORT_DEV | Supports FORTRAN Development |
| Utilities Option | ||
| _SC_2_FORT_RUN | _POSIX2_FORT_RUN | Supports FORTRAN Run-time |
| Utilities Option | ||
| _SC_2_LOCALEDEF | _POSIX2_LOCALEDEF | Supports the creation of locales |
| by the localedef utility | ||
| _SC_2_SW_DEV | _POSIX2_SW_DEV | Supports the Software |
| Development Utility Option | ||
| _SC_2_UPE | _POSIX2_UPE | Supports the User Portability |
| Utilities Option | ||
| _SC_2_VERSION | _POSIX2_VERSION | Integer value indicating version of |
| ISO POSIX-2 standard (C language | ||
| binding) | ||
| _SC_JOB_CONTROL | _POSIX_JOB_CONTROL | Job control supported? |
| _SC_SAVED_IDS | _POSIX_SAVED_IDS | Saved IDs (seteuid()) supported? |
| _SC_VERSION | _POSIX_VERSION | POSIX.1 version supported |
| _SC_RE_DUP_MAX | RE_DUP_MAX | Max number of repeated |
| occurrences of a regular | ||
| expression permitted when using | ||
| the interval notation \{m,n\} | ||
| _SC_STREAM_MAX | STREAM_MAX | Number of streams one processed |
| can have open at a time | ||
| _SC_TZNAME_MAX | TZNAME_MAX | Max number of bytes supported |
| for name of a time zone | ||
| _SC_XOPEN_CRYPT | _XOPEN_CRYPT | Supports X/Open Encryption |
| Feature Group | ||
| _SC_XOPEN_ENH_I18N | _XOPEN_ENH_I18N | Supports X/Open Enhance |
| Internationalization Feature Group | ||
| _SC_XOPEN_SHM | _XOPEN_SHM | Supports X/Open Shared Memory |
| Feature Group | ||
| _SC_XOPEN_VERSION | _XOPEN_VERSION | Integer value indicating version of |
| X/Open Portability Guide to which | ||
| implementation conforms | ||
| _SC_XOPEN_XCU_VERSION | _XOPEN_XCU_VERSION | Integer value indicating version of |
| XCU specification to which | ||
| implementation conforms | ||
| _SC_ATEXIT_MAX | ATEXIT_MAX | Max number of functions that may |
| be registered with atexit() | ||
| _SC_IOV_MAX | IOV_MAX | Max number of iovec structures |
| that one process has available for | ||
| use with readv() and writev() | ||
| _SC_PAGESIZE | PAGESIZE | System memory page size |
| _SC_PAGE_SIZE | PAGESIZE | Same as _SC_PAGESIZE |
| _SC_XOPEN_UNIX | _XOPEN_UNIX | Supports X/Open CAE |
| Specification, August 1994, | ||
| System Interfaces and Headers, | ||
| Issue 4, Version 2 | ||
| _SC_LOGNAME_MAX | LOGNAME_MAX | |
| _SC_NPROCESSORS_CONF | Number of processors configured | |
| _SC_NPROCESSORS_ONLN | Number of processors online | |
| _SC_PHYS_PAGES | Total number of pages of | |
| physical memory in system | ||
| _SC_AVPHYS_PAGES | Number physical memory pages | |
| not currently in use by system | ||
| _SC_AIO_LISTIO_MAX | AIO_LISTIO_MAX | Max number of I/O operations |
| in a single list I/O call | ||
| supported by implementation | ||
| _SC_AIO_MAX | AIO_MAX | Max number of outstanding |
| asynchronous I/O operations | ||
| supported by implementation | ||
| _SC_AIO_PRIO_DELTA_MAX | AIO_PRIO_DELTA_MAX | Max amount by which a process |
| can decrease its asynchronous | ||
| I/O priority level from its own | ||
| scheduling priority | ||
| _SC_DELAYTIMER_MAX | DELAYTIMER_MAX | Max number of timer |
| expiration overruns | ||
| _SC_GETGR_R_SIZE_MAX | NSS_BUFLEN_GROUP | Max size of group entry buffer. |
| _SC_GETPW_R_SIZE_MAX | NSS_BUFLEN_PASSWD | Max size of password entry buffer. |
| _SC_LOGIN_NAME_MAX | LOGNAME_MAX + 1 | Max length of login name. |
| _SC_MQ_OPEN_MAX | MQ_OPEN_MAX | Max number of open message |
| queues a process may hold. | ||
| _SC_MQ_PRIO_MAX | MQ_PRIO_MAX | Max number of message priorities |
| supported by implementation. | ||
| _SC_RTSIG_MAX | RTSIG_MAX | Max number of realtime signals |
| reserved for application use | ||
| in this implementation. | ||
| _SC_SEM_NSEMS_MAX | SEM_NSEMS_MAX | Max number of semaphores |
| that a process may have. | ||
| _SC_SEM_VALUE_MAX | SEM_VALUE_MAX | Max value a semaphore may have. |
| _SC_SIGQUEUE_MAX | SIGQUEUE_MAX | Max number of queued signals |
| that a process may send and have | ||
| pending at receiver(s) at a time. | ||
| _SC_TIMER_MAX | TIMER_MAX | Max number of timers per process |
| supported by implementation. | ||
| _SC_ASYNCHRONOUS_IO | _POSIX_ASYNCHRONOUS_IO | Supports Asynchronous I/O. |
| _SC_FSYNC | _POSIX_FSYNC | Supports File Synchronization. |
| _SC_MAPPED_FILES | _POSIX_MAPPED_FILES | Supports Memory Mapped Files. |
| _SC_MEMLOCK | _POSIX_MEMLOCK | Supports Process Memory Locking. |
| _SC_MEMLOCK_RANGE | _POSIX_MEMLOCK_RANGE | Supports Range Memory Locking. |
| _SC_MEMORY_PROTECTION | _POSIX_MEMORY_PROTECTION | Supports Memory Protection. |
| _SC_MESSAGE_PASSING | _POSIX_MESSAGE_PASSING | Supports Message Passing. |
| _SC_PRIORITIZED_IO | _POSIX_PRIORITIZED_IO | Supports Prioritized I/O. |
| _SC_PRIORITY_SCHEDULING | _POSIX_PRIORITY_SCHEDULING | Supports Process Scheduling |
| _SC_REALTIME_SIGNALS | _POSIX_REALTIME_SIGNALS | Supports Realtime Signals. |
| _SC_SEMAPHORES | _POSIX_SEMAPHORES | Supports Semaphores. |
| _SC_SHARED_MEMORY_ | _POSIX_SHARED_MEMORY_ | Supports Shared Memory |
| OBJECTS | OBJECTS | Objects. |
| _SC_SYNCHRONIZED_IO | _POSIX_SYNCHRONIZED_IO | Supports Synchronized I/O. |
| _SC_TIMERS | _POSIX_TIMERS | Supports Timers. |
| _SC_THREAD_DESTRUCTOR_ | PTHREAD_DESTRUCTOR_ | Number attempts made to destroy |
| ITERATIONS | ITERATIONS | thread-specific data on thread exit. |
| _SC_THREAD_KEYS_MAX | PTHREAD_KEYS_MAX | Max number of data keys |
| per process. | ||
| _SC_THREAD_STACK_MIN | PTHREAD_STACK_MIN | Min byte size of thread |
| stack storage. | ||
| _SC_THREAD_THREADS_MAX | PTHREAD_THREADS_MAX | Max number of threads per process. |
| _SC_TTY_NAME_MAX | TTYNAME_MAX | Max length of tty device name. |
| _SC_THREADS | _POSIX_THREADS | Supports Threads option. |
| _SC_THREAD_ATTR_STACKADDR | _POSIX_THREAD_ATTR_STACKADDR |
| Supports Thread Stack Address Attribute option. | |
| _SC_THREAD_ATTR_STACKSIZE | _POSIX_THREAD_ATTR_STACKSIZE |
| Supports Thread Stack Size Attribute option. | |
| _SC_THREAD_PRIORITY_SCHEDULING | _POSIX_THREAD_PRIORITY_SCHEDULING |
| Supports Thread Execution Scheduling option. | |
| _SC_THREAD_PRIO_INHERIT | _POSIX_THREAD_PRIO_INHERIT |
| Supports Priority Inheritance option. | |
| _SC_THREAD_PRIO_PROTECT | _POSIX_THREAD_PRIO_PROTECT |
| Supports Priority Protection option. | |
| _SC_THREAD_PROCESS_SHARED | _POSIX_THREAD_PROCESS_SHARED |
| Supports Process-Shared Synchronization option. | |
| _SC_THREAD_SAFE_FUNCTIONS | _POSIX_THREAD_SAFE_FUNCTIONS |
| Supports Thread-Safe Functions option. |
The following table lists the names and return values for SPARC and x86 platform variables.
| Name | Return Value |
| SPARC, x86 | |
| _SC_COHER_BLKSZ | EINVAL |
| _SC_SPLIT_CACHE | EINVAL |
| _SC_ICACHE_SZ | EINVAL |
| _SC_DCACHE_SZ | EINVAL |
| _SC_ICACHE_LINESZ | EINVAL |
| _SC_DCACHE_LINESZ | EINVAL |
| _SC_ICACHE_BLKSZ | EINVAL |
| _SC_DCACHE_BLKSZ | EINVAL |
| _SC_DCACHE_TBLKSZ | EINVAL |
| _SC_ICACHE_ASSOC | EINVAL |
| _SC_DCACHE_ASSOC | EINVAL |
RETURN VALUES
If name is an invalid value, sysconf() returns −1 and sets errno to indicate the error. If the variable corresponding to name is associated with functionality that is not supported by the system, sysconf() returns −1 without changing the value of errno.
Otherwise, sysconf() returns the current variable value on the system. The value returned will not be more restrictive than the corresponding value described to the application when it was compiled with the implementation’s <limits.h>, <unistd.h> or <time.h>. The value will not change during the lifetime of the calling process.
ERRORS
The sysconf() function will fail if:
EINVAL The value of the name argument is invalid.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| Architecture | SPARC and x86 |
| MT-Level | MT-Safe, Async-Signal-Safe |
SEE ALSO
fpathconf(2), seteuid(2), setrlimit(2), attributes(5), standards(5)
NOTES
A call to setrlimit() may cause the value of OPEN_MAX to change.
Multiplying sysconf(_SC_PHYS_PAGES) or sysconf(_SC_AVPHYS_PAGES) by sysconf(_SC_PAGESIZE) to determine memory amount in bytes can exceed the maximum values representable in a long or unsigned long.
_SC_PHYS_PAGES and _SC_AVPHYS_PAGES are specific to Solaris 2.3 and later releases.
The value of CLK_TCK may be variable and it should not be assumed that CLK_TCK is a compile-time constant.
Calling sysconf() with _SC_THREAD_KEYS_MAX or _SC_THREAD_THREADS_MAX returns −1, because no maximum limit can be determined. The system supports at least the minimum values defined by _POSIX_THREAD_KEYS_MAX and _POSIX_THREAD_THREADS_MAX and can support higher values depending upon system resources.
The _SC_THREAD_PRIO_INHERIT and _SC_THREAD_PRIO_PROTECT variables are currently not supported. A call to sysconf() with these variables as arguments returns −1.
SunOS 5.6 — Last change: 20 Mar 1997