1 /* Copyright (C) 1991,93,1995-1997,1999-2003 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
27 #include <sys/param.h>
28 #include <sys/sysinfo.h>
29 #include <sys/types.h>
33 /* Get the value of the system variable NAME. */
59 return __getclktck ();
69 return __getdtablesize ();
79 return MAX (__tzname_max (), _POSIX_TZNAME_MAX
);
82 #ifdef _POSIX_JOB_CONTROL
89 #ifdef _POSIX_SAVED_IDS
95 case _SC_REALTIME_SIGNALS
:
96 #ifdef _POSIX_REALTIME_SIGNALS
102 case _SC_PRIORITY_SCHEDULING
:
103 #ifdef _POSIX_PRIORITY_SCHEDULING
116 case _SC_ASYNCHRONOUS_IO
:
117 #ifdef _POSIX_ASYNCHRONOUS_IO
123 case _SC_PRIORITIZED_IO
:
124 #ifdef _POSIX_PRIORITIZED_IO
130 case _SC_SYNCHRONIZED_IO
:
131 #ifdef _POSIX_SYNCHRONIZED_IO
144 case _SC_MAPPED_FILES
:
145 #ifdef _POSIX_MAPPED_FILES
152 #ifdef _POSIX_MEMLOCK
158 case _SC_MEMLOCK_RANGE
:
159 #ifdef _POSIX_MEMLOCK_RANGE
165 case _SC_MEMORY_PROTECTION
:
166 #ifdef _POSIX_MEMORY_PROTECTION
172 case _SC_MESSAGE_PASSING
:
173 #ifdef _POSIX_MESSAGE_PASSING
180 #ifdef _POSIX_SEMAPHORES
186 case _SC_SHARED_MEMORY_OBJECTS
:
187 #ifdef _POSIX_SHARED_MEMORY_OBJECTS
194 return _POSIX_VERSION
;
197 return __getpagesize ();
199 case _SC_AIO_LISTIO_MAX
:
200 #ifdef AIO_LISTIO_MAX
201 return AIO_LISTIO_MAX
;
213 case _SC_AIO_PRIO_DELTA_MAX
:
214 #ifdef AIO_PRIO_DELTA_MAX
215 return AIO_PRIO_DELTA_MAX
;
220 case _SC_DELAYTIMER_MAX
:
221 #ifdef DELAYTIMER_MAX
222 return DELAYTIMER_MAX
;
227 case _SC_MQ_OPEN_MAX
:
234 case _SC_MQ_PRIO_MAX
:
248 case _SC_SEM_NSEMS_MAX
:
250 return SEM_NSEMS_MAX
;
255 case _SC_SEM_VALUE_MAX
:
257 return SEM_VALUE_MAX
;
262 case _SC_SIGQUEUE_MAX
:
276 case _SC_BC_BASE_MAX
:
290 case _SC_BC_SCALE_MAX
:
297 case _SC_BC_STRING_MAX
:
299 return BC_STRING_MAX
;
304 case _SC_COLL_WEIGHTS_MAX
:
305 #ifdef COLL_WEIGHTS_MAX
306 return COLL_WEIGHTS_MAX
;
311 case _SC_EXPR_NEST_MAX
:
313 return EXPR_NEST_MAX
;
332 case _SC_CHARCLASS_NAME_MAX
:
333 #ifdef CHARCLASS_NAME_MAX
334 return CHARCLASS_NAME_MAX
;
347 #ifdef _POSIX_PII_XTI
354 #ifdef _POSIX_PII_SOCKET
360 case _SC_PII_INTERNET
:
361 #ifdef _POSIX_PII_INTERNET
368 #ifdef _POSIX_PII_OSI
395 case _SC_PII_INTERNET_STREAM
:
396 #ifdef _POSIX_PII_INTERNET_STREAM
402 case _SC_PII_INTERNET_DGRAM
:
403 #ifdef _POSIX_PII_INTERNET_DGRAM
409 case _SC_PII_OSI_COTS
:
410 #ifdef _POSIX_PII_OSI_COTS
416 case _SC_PII_OSI_CLTS
:
417 #ifdef _POSIX_PII_OSI_CLTS
424 #ifdef _POSIX_PII_OSI_M
438 return _POSIX2_VERSION
;
441 #ifdef _POSIX2_C_BIND
442 return _POSIX2_C_BIND
;
449 return _POSIX2_C_DEV
;
454 case _SC_2_C_VERSION
:
455 #ifdef _POSIX2_C_VERSION
456 return _POSIX2_C_VERSION
;
462 #ifdef _POSIX2_FORT_DEV
463 return _POSIX2_FORT_DEV
;
468 case _SC_2_LOCALEDEF
:
469 #ifdef _POSIX2_LOCALEDEF
470 return _POSIX2_LOCALEDEF
;
476 #ifdef _POSIX2_SW_DEV
477 return _POSIX2_SW_DEV
;
482 case _SC_2_CHAR_TERM
:
483 #ifdef _POSIX2_CHAR_TERM
484 return _POSIX2_CHAR_TERM
;
496 /* POSIX 1003.1c (POSIX Threads). */
498 #ifdef _POSIX_THREADS
504 case _SC_THREAD_SAFE_FUNCTIONS
:
505 #ifdef _POSIX_THREAD_SAFE_FUNCTIONS
511 case _SC_GETGR_R_SIZE_MAX
:
512 return NSS_BUFLEN_GROUP
;
514 case _SC_GETPW_R_SIZE_MAX
:
515 return NSS_BUFLEN_PASSWD
;
517 case _SC_LOGIN_NAME_MAX
:
518 #ifdef LOGIN_NAME_MAX
519 return LOGIN_NAME_MAX
;
524 case _SC_TTY_NAME_MAX
:
531 case _SC_THREAD_DESTRUCTOR_ITERATIONS
:
532 #ifdef _POSIX_THREAD_DESTRUCTOR_ITERATIONS
533 return _POSIX_THREAD_DESTRUCTOR_ITERATIONS
;
538 case _SC_THREAD_KEYS_MAX
:
539 #ifdef PTHREAD_KEYS_MAX
540 return PTHREAD_KEYS_MAX
;
545 case _SC_THREAD_STACK_MIN
:
546 #ifdef PTHREAD_STACK_MIN
547 return PTHREAD_STACK_MIN
;
552 case _SC_THREAD_THREADS_MAX
:
553 #ifdef PTHREAD_THREADS_MAX
554 return PTHREAD_THREADS_MAX
;
559 case _SC_THREAD_ATTR_STACKADDR
:
560 #ifdef _POSIX_THREAD_ATTR_STACKADDR
566 case _SC_THREAD_ATTR_STACKSIZE
:
567 #ifdef _POSIX_THREAD_ATTR_STACKSIZE
573 case _SC_THREAD_PRIORITY_SCHEDULING
:
574 #ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
580 case _SC_THREAD_PRIO_INHERIT
:
581 #ifdef _POSIX_THREAD_PRIO_INHERIT
587 case _SC_THREAD_PRIO_PROTECT
:
588 #ifdef _POSIX_THREAD_PRIO_PROTECT
594 case _SC_THREAD_PROCESS_SHARED
:
595 #ifdef _POSIX_THREAD_PROCESS_SHARED
601 case _SC_NPROCESSORS_CONF
:
602 return __get_nprocs_conf ();
604 case _SC_NPROCESSORS_ONLN
:
605 return __get_nprocs ();
608 return __get_phys_pages ();
610 case _SC_AVPHYS_PAGES
:
611 return __get_avphys_pages ();
614 /* We have no limit since we use lists. */
618 /* We have no limit but since the return value might be used to
619 allocate a buffer we restrict the value. */
622 case _SC_XOPEN_VERSION
:
623 return _XOPEN_VERSION
;
625 case _SC_XOPEN_XCU_VERSION
:
626 return _XOPEN_XCU_VERSION
;
631 case _SC_XOPEN_CRYPT
:
638 case _SC_XOPEN_ENH_I18N
:
639 #ifdef _XOPEN_ENH_I18N
640 return _XOPEN_ENH_I18N
;
689 return sizeof (long int) * CHAR_BIT
;
692 return sizeof (int) * CHAR_BIT
;
701 return _POSIX_SSIZE_MAX
;
769 case _SC_XBS5_ILP32_OFF32
:
770 #ifdef _XBS5_ILP32_OFF32
771 return _XBS5_ILP32_OFF32
;
775 case _SC_XBS5_ILP32_OFFBIG
:
776 #ifdef _XBS5_ILP32_OFFBIG
777 return _XBS5_ILP32_OFFBIG
;
781 case _SC_XBS5_LP64_OFF64
:
782 #ifdef _XBS5_LP64_OFF64
783 return _XBS5_LP64_OFF64
;
787 case _SC_XBS5_LPBIG_OFFBIG
:
788 #ifdef _XBS5_LPBIG_OFFBIG
789 return _XBS5_LPBIG_OFFBIG
;
794 case _SC_V6_ILP32_OFF32
:
795 #ifdef _POSIX_V6_ILP32_OFF32
796 return _POSIX_V6_ILP32_OFF32
;
800 case _SC_V6_ILP32_OFFBIG
:
801 #ifdef _POSIX_V6_ILP32_OFFBIG
802 return _POSIX_V6_ILP32_OFFBIG
;
806 case _SC_V6_LP64_OFF64
:
807 #ifdef _POSIX_V6_LP64_OFF64
808 return _POSIX_V6_LP64_OFF64
;
812 case _SC_V6_LPBIG_OFFBIG
:
813 #ifdef _POSIX_V6_LPBIG_OFFBIG
814 return _POSIX_V6_LPBIG_OFFBIG
;
819 case _SC_XOPEN_LEGACY
:
820 return _XOPEN_LEGACY
;
822 case _SC_XOPEN_REALTIME
:
823 #ifdef _XOPEN_REALTIME
824 return _XOPEN_REALTIME
;
828 case _SC_XOPEN_REALTIME_THREADS
:
829 #ifdef _XOPEN_REALTIME_THREADS
830 return _XOPEN_REALTIME_THREADS
;
835 case _SC_ADVISORY_INFO
:
836 #ifdef _POSIX_ADVISORY_INFO
837 return _POSIX_ADVISORY_INFO
;
843 #ifdef _POSIX_BARRIERS
844 return _POSIX_BARRIERS
;
855 case _SC_C_LANG_SUPPORT
:
856 #ifdef _POSIX_C_LANG_SUPPORT
857 return _POSIX_C_LANG_SUPPORT
;
861 case _SC_C_LANG_SUPPORT_R
:
862 #ifdef _POSIX_C_LANG_SUPPORT_R
863 return _POSIX_C_LANG_SUPPORT_R
;
868 case _SC_CLOCK_SELECTION
:
869 #ifdef _POSIX_CLOCK_SELECTION
870 return _POSIX_CLOCK_SELECTION
;
876 #ifdef _POSIX_CPUTIME
877 return _POSIX_CPUTIME
;
883 #ifdef _POSIX_DEVICE_IO
884 return _POSIX_DEVICE_IO
;
888 case _SC_DEVICE_SPECIFIC
:
889 #ifdef _POSIX_DEVICE_SPCIFIC
890 return _POSIX_DEVICE_SPECIFIC
;
894 case _SC_DEVICE_SPECIFIC_R
:
895 #ifdef _POSIX_DEVICE_SPCIFIC_R
896 return _POSIX_DEVICE_SPECIFIC_R
;
902 #ifdef _POSIX_FD_MGMT
903 return _POSIX_FD_MGMT
;
921 case _SC_FILE_ATTRIBUTES
:
922 #ifdef _POSIX_FILE_ATTRIBUTES
923 return _POSIX_FILE_ATTRIBUTES
;
927 case _SC_FILE_LOCKING
:
928 #ifdef _POSIX_FILE_LOCKING
929 return _POSIX_FILE_LOCKING
;
933 case _SC_FILE_SYSTEM
:
934 #ifdef _POSIX_FILE_SYSTEM
935 return _POSIX_FILE_SYSTEM
;
940 case _SC_MONOTONIC_CLOCK
:
941 #if _POSIX_MONOTONIC_CLOCK
942 return _POSIX_MONOTONIC_CLOCK
;
947 case _SC_MULTI_PROCESS
:
948 #ifdef _POSIX_MULTI_PROCESS
949 return _POSIX_MULTI_PROCESS
;
953 case _SC_SINGLE_PROCESS
:
954 #ifdef _POSIX_SINGLE_PROCESS
955 return _POSIX_SINGLE_PROCESS
;
961 #ifdef _POSIX_NETWORKING
962 return _POSIX_NETWORKING
;
967 case _SC_READER_WRITER_LOCKS
:
968 #ifdef _POSIX_READER_WRITER_LOCKS
969 return _POSIX_READER_WRITER_LOCKS
;
974 #ifdef _POSIX_SPIN_LOCKS
975 return _POSIX_SPIN_LOCKS
;
982 return _POSIX_REGEXP
;
986 case _SC_REGEX_VERSION
:
987 #ifdef _POSIX_REGEX_VERSION
988 return _POSIX_REGEX_VERSION
;
1001 #ifdef _POSUX_SIGNALS
1002 return _POSIX_SIGNALS
;
1009 return _POSIX_SPAWN
;
1014 case _SC_SPORADIC_SERVER
:
1015 #ifdef _POSIX_SPORADIC_SERVER
1016 return _POSIX_SPORADIC_SERVER
;
1020 case _SC_THREAD_SPORADIC_SERVER
:
1021 #ifdef _POSIX_THREAD_SPORADIC_SERVER
1022 return _POSIX_THREAD_SPORADIC_SERVER
;
1027 case _SC_SYSTEM_DATABASE
:
1028 #ifdef _POSIX_SYSTEM_DATABASE
1029 return _POSIX_SYSTEM_DATABASE
;
1033 case _SC_SYSTEM_DATABASE_R
:
1034 #ifdef _POSIX_SYSTEM_DATABASE_R
1035 return _POSIX_SYSTEM_DATABASE_R
;
1040 case _SC_THREAD_CPUTIME
:
1041 #ifdef _POSIX_THREAD_CPUTIME
1042 return _POSIX_THREAD_CPUTIME
;
1048 #ifdef _POSIX_TIMEOUTS
1049 return _POSIX_TIMEOUTS
;
1054 case _SC_TYPED_MEMORY_OBJECTS
:
1055 #ifdef _POSIX_TYPED_MEMORY_OBJECTS
1056 return _POSIX_TYPED_MEMORY_OBJECTS
;
1061 case _SC_USER_GROUPS
:
1062 #ifdef _POSIX_USER_GROUPS
1063 return _POSIX_USER_GROUPS
;
1067 case _SC_USER_GROUPS_R
:
1068 #ifdef _POSIX_USER_GROUPS_R
1069 return _POSIX_USER_GROUPS_R
;
1080 case _SC_2_PBS_ACCOUNTING
:
1081 #ifdef _POSIX2_PBS_ACCOUNTING
1082 return _POSIX2_PBS_ACCOUNTING
;
1086 case _SC_2_PBS_CHECKPOINT
:
1087 #ifdef _POSIX2_PBS_CHECKPOINT
1088 return _POSIX2_PBS_CHECKPOINT
;
1092 case _SC_2_PBS_LOCATE
:
1093 #ifdef _POSIX2_PBS_LOCATE
1094 return _POSIX2_PBS_LOCATE
;
1098 case _SC_2_PBS_TRACK
:
1099 #ifdef _POSIX2_PBS_TRACK
1100 return _POSIX2_PBS_TRACK
;
1105 case _SC_SYMLOOP_MAX
:
1113 #ifdef _XOPEN_STREAMS
1114 return _XOPEN_STREAMS
;
1122 weak_alias (__sysconf
, sysconf
)
1123 libc_hidden_def (__sysconf
)