about summary refs log tree commit diff
path: root/src/conf
Commit message (Collapse)AuthorAgeFilesLines
* fix build regression in sysconf for archs with variable page sizeRich Felker2018-09-141-0/+1
| | | | | | commit 5ce3737931bb411a8d167356d4d0287b53b0cbdc removed the inclusion of libc.h from this file as spurious, but it's needed to get PAGE_SIZE on archs where PAGE_SIZE is not a constant defined by limits.h.
* reduce spurious inclusion of libc.hRich Felker2018-09-121-1/+0
| | | | | | | | | | | | | | | | | | | | | libc.h was intended to be a header for access to global libc state and related interfaces, but ended up included all over the place because it was the way to get the weak_alias macro. most of the inclusions removed here are places where weak_alias was needed. a few were recently introduced for hidden. some go all the way back to when libc.h defined CANCELPT_BEGIN and _END, and all (wrongly implemented) cancellation points had to include it. remaining spurious users are mostly callers of the LOCK/UNLOCK macros and files that use the LFS64 macro to define the awful *64 aliases. in a few places, new inclusion of libc.h is added because several internal headers no longer implicitly include libc.h. declarations for __lockfile and __unlockfile are moved from libc.h to stdio_impl.h so that the latter does not need libc.h. putting them in libc.h made no sense at all, since the macros in stdio_impl.h are needed to use them correctly anyway.
* overhaul internally-public declarations using wrapper headersRich Felker2018-09-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commits leading up to this one have moved the vast majority of libc-internal interface declarations to appropriate internal headers, allowing them to be type-checked and setting the stage to limit their visibility. the ones that have not yet been moved are mostly namespace-protected aliases for standard/public interfaces, which exist to facilitate implementing plain C functions in terms of POSIX functionality, or C or POSIX functionality in terms of extensions that are not standardized. some don't quite fit this description, but are "internally public" interfacs between subsystems of libc. rather than create a number of newly-named headers to declare these functions, and having to add explicit include directives for them to every source file where they're needed, I have introduced a method of wrapping the corresponding public headers. parallel to the public headers in $(srcdir)/include, we now have wrappers in $(srcdir)/src/include that come earlier in the include path order. they include the public header they're wrapping, then add declarations for namespace-protected versions of the same interfaces and any "internally public" interfaces for the subsystem they correspond to. along these lines, the wrapper for features.h is now responsible for the definition of the hidden, weak, and weak_alias macros. this means source files will no longer need to include any special headers to access these features. over time, it is my expectation that the scope of what is "internally public" will expand, reducing the number of source files which need to include *_impl.h and related headers down to those which are actually implementing the corresponding subsystems, not just using them.
* fix several values reported by sysconfRich Felker2018-08-281-8/+11
| | | | | | - REALTIME_SIGNALS is supposed to be version-valued - DELAYTIMER_MAX was wrongly using the min allowed max - unavailable compilation environments wrongly used 0 instead of -1
* remove erroneous SYMLINK_MAX definition from limits.h, pathconfRich Felker2018-08-201-1/+1
| | | | | | | | | | | | | | | | | POSIX requires the symlink function to fail with ENAMETOOLONG if the link contents to be written exceed SYMLINK_MAX in length, but neither Linux nor our syscall wrapper code enforce this. the value 255 for SYMLINK_MAX is not meaningful and does not seem to have been motivated by anything except perhaps a wrong assumption that a definition was mandatory. it has been present (though moving through bits to top-level limits.h) since the beginning of the project history. [f]pathconf is entitled to return -1 as the limit for conf names for which there is no hard limit, with the usual POSIX note that an indefinite limit does not imply an infinite limit. in principle we might should report a limit for filesystems that impose one, but such functionality is not currently present for any of the pathconf limits, and adding it is beyond the scope of fixing the incorrect limit.
* fix sysconf for infinite rlimitsNatanael Copa2017-12-141-0/+2
| | | | sysconf should return -1 for infinity, not LONG_MAX.
* add missing confstr constantsDaniel Sabogal2016-10-201-1/+1
| | | | | | | | | | the _CS_V6_ENV and _CS_V7_ENV constants are required to be available for use with confstr. glibc defines these constants with values 1148 and 1149, respectively. the only missing (and required) confstr constants are _CS_POSIX_V7_THREADS_CFLAGS and _CS_POSIX_V7_THREADS_LDFLAGS which remain unavailable in glibc.
* add legacy functions from sysinfo.h duplicating sysconf functionalityRich Felker2015-03-041-0/+22
|
* fix off-by-one in bounds check in fpathconfRich Felker2014-09-051-1/+1
| | | | | | this error resulted in an out-of-bounds read, as opposed to a reported error, when calling the function with an argument one greater than the max valid index.
* remove unsupported nonstandard sysconf macros and their table entriesRich Felker2014-05-191-60/+0
| | | | | | | | | | | | | | | | | | | | | | some of these may have been from ancient (pre-SUSv2) POSIX versions; more likely, they were from POSIX drafts or glibc interpretations of what ancient versions of POSIX should have added (instead they made they described functionality mandatory and/or dropped it completely). others are purely glibc-isms, many of them ill-thought-out, like providing ways to lookup the min/max values of types at runtime (despite the impossibility of them changing at runtime and the impossibility of representing ULONG_MAX in a return value of type long). since our sysconf implementation does not support or return meaningful values for any of these, it's harmful to have the macros around; applications' build scripts may detect and attempt to use them, only to get -1/EINVAL as a result. if removing them does break some applications, and it's determined that the usage was reasonable, some of these could be added back on an as-needed basis, but they should return actual meaningful values, not junk like they were returning before.
* rework sysconf table to treat zero entries as invalidRich Felker2014-05-191-10/+13
| | | | | | | | | | | | | | | based on patch by Timo Teräs. previously, the value zero was used as a literal zero, meaning that all invalid sysconf "names", which should result in sysconf returning -1, had to be explicitly listed. (in addition, it was not possible for sysconf to set errno to EINVAL, as there was no distinction between -1 as an error and -1 as a valid result.) now, the value 0 is used for invalid/undefined slots in the table and a new switch table entry is used for returning literal zeros. in addition, an off-by-one error in checking against the table size is fixed.
* add _SC_PHYS_PAGES and _SC_AVPHYS_PAGES extentions to sysconfRich Felker2014-04-151-2/+17
|
* in sysconf, use getrlimit function rather than raw syscall for rlimitsRich Felker2014-04-151-3/+3
| | | | | | the syscall is deprecated (replaced by prlimit64) and does not work correctly on x32. this change mildly increases size, but is likely needed anyway for newer archs that might omit deprecated syscalls.
* avoid linear-time if/else special cases in sysconfRich Felker2014-04-151-20/+35
| | | | | | | the previous handling of cases that could not fit in the 16-bit table or which required non-constant results was extremely ugly and could not scale. the new code remaps these keys into a contiguous range that's efficient for a switch statement.
* fix confstr return valueTimo Teräs2014-03-241-1/+1
| | | | per the specification, the terminating null byte is counted.
* correct the sysconf value for RTSIG_MAXRich Felker2013-09-201-1/+2
| | | | | this is the number of realtime signals available, not the maximum signal number or total number of signals.
* support configurable page size on mips, powerpc and microblazeSzabolcs Nagy2013-09-152-6/+9
| | | | | | | | | | | | | | | | PAGE_SIZE was hardcoded to 4096, which is historically what most systems use, but on several archs it is a kernel config parameter, user space can only know it at execution time from the aux vector. PAGE_SIZE and PAGESIZE are not defined on archs where page size is a runtime parameter, applications should use sysconf(_SC_PAGE_SIZE) to query it. Internally libc code defines PAGE_SIZE to libc.page_size, which is set to aux[AT_PAGESZ] in __init_libc and early in __dynlink as well. (Note that libc.page_size can be accessed without GOT, ie. before relocations are done) Some fpathconf settings are hardcoded to 4096, these should be actually queried from the filesystem using statfs.
* fix overflow in sysconf for _SC_MQ_PRIO_MAXRich Felker2013-09-141-1/+2
| | | | the value of MQ_PRIO_MAX does not fit, so it needs to use OFLOW.
* a few more fixes for unistd/sysconf feature reportingRich Felker2013-07-271-7/+7
|
* report presence of ADV and MSG options in unistd.h and sysconfRich Felker2013-07-261-2/+2
|
* report that posix_spawn is supported in unistd.h and sysconfRich Felker2013-07-261-1/+1
|
* document in sysconf and unistd.h that per-thread cpu clocks existRich Felker2013-06-261-1/+1
|
* report support of TPS option in unistd.h and sysconfRich Felker2012-11-111-2/+2
| | | | also update another newish feature in sysconf, stackaddr
* let sysconf accurately report # of cpus availableRich Felker2012-05-131-2/+10
| | | | | i've been trying out openmp and it seems like it won't be much use without this...
* fix broken sysconf when correct value is -1Rich Felker2012-04-211-1/+1
| | | | | this caused glib to try to allocate >2gb for getpwnam_r, and probably numerous other problems.
* sysconf support for dynamic limits (open files and processes)Rich Felker2012-03-221-2/+9
|
* sysconf for PTHREAD_KEYS_MAXRich Felker2011-10-031-1/+1
|
* in pathconf, -1, not 0, means unsupported.. syncio presumably works, too.Rich Felker2011-08-161-3/+3
|
* fix bogus pathconf result for file size bitsRich Felker2011-08-161-1/+1
|
* define MQ_PRIO_MAXRich Felker2011-06-071-1/+1
|
* better fix sysconf pthread stack minRich Felker2011-04-081-1/+1
|
* consistency with pthread stack min in limits.hRich Felker2011-04-081-1/+1
|
* fix sem_open and sem_close to obey posix semanticsRich Felker2011-03-101-5/+5
| | | | | | | | | multiple opens of the same named semaphore must return the same pointer, and only the last close can unmap it. thus the ugly global state keeping track of mappings. the maximum number of distinct named semaphores that can be opened is limited sufficiently small that the linear searches take trivial time, especially compared to the syscall overhead of these functions.
* put confstr.c with the other conf functionsRich Felker2011-02-141-0/+17
|
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-123-0/+263