summaryrefslogtreecommitdiffstats
path: root/lib/libc/include
Commit message (Collapse)AuthorAgeFilesLines
* Introduce a non-portable function pthread_getthreadid_np(3) to retrievejkim2011-02-072-0/+2
| | | | | | | calling thread's unique integral ID, which is similar to AIX function of the same name. Bump __FreeBSD_version to note its introduction. Reviewed by: kib
* Remove some unneeded spaces from the __sym_compat() macro, since newerdim2010-11-111-1/+1
| | | | | versions of gas are more fussy about spaces surrounding '@' signs in versioned symbol names.
* Revert revision 214007, I realized that MySQL wants to resolvedavidxu2010-10-202-4/+0
| | | | | | | a silly rwlock deadlock problem, the deadlock is caused by writer waiters, if a thread has already locked a reader lock, and wants to acquire another reader lock, it will be blocked by writer waiters, but we had already fixed it years ago.
* Unbreak buildworld by including pthread_rwlockattr_setkind_np anddavidxu2010-10-182-0/+4
| | | | pthread_rwlockattr_getkind_np.
* To support stack unwinding for cancellation points, add -fexceptions flagdavidxu2010-09-251-0/+5
| | | | | | | for them, two functions _pthread_cancel_enter and _pthread_cancel_leave are added to let thread enter and leave a cancellation point, it also makes it possible that other functions can be cancellation points in libraries without having to be rewritten in libthr.
* On shared object unload, in __cxa_finalize, call and clear all installedkib2010-08-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | atexit and __cxa_atexit handlers that are either installed by unloaded dso, or points to the functions provided by the dso. Use _rtld_addr_phdr to locate segment information from the address of private variable belonging to the dso, supplied by crtstuff.c. Provide utility function __elf_phdr_match_addr to do the match of address against dso executable segment. Call back into libthr from __cxa_finalize using weak __pthread_cxa_finalize symbol to remove any atfork handler which function points into unloaded object. The rtld needs private __pthread_cxa_finalize symbol to not require resolution of the weak undefined symbol at initialization time. This cannot work, since rtld is relocated before sym_zero is set up. Idea by: kan Reviewed by: kan (previous version) MFC after: 3 weeks
* Use aux vector to get values for SSP canary, pagesize, pagesizes array,kib2010-08-171-0/+2
| | | | | | | | | | | number of host CPUs and osreldate. This eliminates the last sysctl(2) calls from the dynamically linked image startup. No objections from: kan Tested by: marius (sparc64) MFC after: 1 month
* The NetBSD Foundation has granted permission to remove clause 3 and 4 fromjoel2010-03-021-7/+0
| | | | | | their software. Obtained from: NetBSD
* Use umtx to implement process sharable semaphore, to make this work,davidxu2010-01-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | now type sema_t is a structure which can be put in a shared memory area, and multiple processes can operate it concurrently. User can either use mmap(MAP_SHARED) + sem_init(pshared=1) or use sem_open() to initialize a shared semaphore. Named semaphore uses file system and is located in /tmp directory, and its file name is prefixed with 'SEMD', so now it is chroot or jail friendly. In simplist cases, both for named and un-named semaphore, userland code does not have to enter kernel to reduce/increase semaphore's count. The semaphore is designed to be crash-safe, it means even if an application is crashed in the middle of operating semaphore, the semaphore state is still safely recovered by later use, there is no waiter counter maintained by userland code. The main semaphore code is in libc and libthr only has some necessary stubs, this makes it possible that a non-threaded application can use semaphore without linking to thread library. Old semaphore implementation is kept libc to maintain binary compatibility. The kernel ksem API is no longer used in the new implemenation. Discussed on: threads@
* Revert the previous change to pthread_once() stub in libc. It is actuallyjhb2009-11-201-1/+0
| | | | | | | | a feature that libstdc++ depends on to simulate the behavior of libc's internal '__isthreaded' variable. One benefit of this is that _libc_once() is now private to _once_stub.c. Requested by: kan
* Add an internal _once() method. This works identical to pthread_once(3)jhb2009-11-201-0/+8
| | | | | | | | | | | | | with the additional property that it is safe for routines in libc to use in both single-threaded and multi-threaded processes. Multi-threaded processes use the pthread_once() implementation from the threading library while single-threaded processes use a simplified "stub" version internal to libc. The libc stub-version of pthread_once() now also uses the simplified "stub" version as well instead of being a nop. Reviewed by: deischen, Matthew Fleming @ Isilon Suggested by: alc MFC after: 1 week
* Make openat(2) a cancellation point.jilles2009-10-112-0/+2
| | | | | | | This is required by POSIX and matches open(2). Reviewed by: kib, jhb MFC after: 1 month
* Change the ABI of some of the structures used by the SYSV IPC API:jhb2009-06-241-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - The uid/cuid members of struct ipc_perm are now uid_t instead of unsigned short. - The gid/cgid members of struct ipc_perm are now gid_t instead of unsigned short. - The mode member of struct ipc_perm is now mode_t instead of unsigned short (this is merely a style bug). - The rather dubious padding fields for ABI compat with SV/I386 have been removed from struct msqid_ds and struct semid_ds. - The shm_segsz member of struct shmid_ds is now a size_t instead of an int. This removes the need for the shm_bsegsz member in struct shmid_kernel and should allow for complete support of SYSV SHM regions >= 2GB. - The shm_nattch member of struct shmid_ds is now an int instead of a short. - The shm_internal member of struct shmid_ds is now gone. The internal VM object pointer for SHM regions has been moved into struct shmid_kernel. - The existing __semctl(), msgctl(), and shmctl() system call entries are now marked COMPAT7 and new versions of those system calls which support the new ABI are now present. - The new system calls are assigned to the FBSD-1.1 version in libc. The FBSD-1.0 symbols in libc now refer to the old COMPAT7 system calls. - A simplistic framework for tagging system calls with compatibility symbol versions has been added to libc. Version tags are added to system calls by adding an appropriate __sym_compat() entry to src/lib/libc/incldue/compat.h. [1] PR: kern/16195 kern/113218 bin/129855 Reviewed by: arch@, rwatson Discussed with: kan, kib [1]
* Revert unnecessary memset after calloc.zml2009-05-281-1/+0
| | | | | Suggested by: jhb Approved by: dfr (mentor)
* Fix an issue when nss fallback routines are used in a multithreaded application.zml2009-05-271-0/+1
| | | | | Reviewed by: bushman Approved by: dfr (mentor)
* Add support for the FPA floating-point format on ARM. Themarcel2008-12-231-0/+9
| | | | | | | | | FPA floating-point format is identical to the VFP format, but is always stored in big-endian. Introduce _IEEE_WORD_ORDER to describe the byte-order of the FP representation. Obtained from: Juniper Networks, Inc
* Merge the resolver part of BIND 9.4.3 into HEAD.ume2008-12-142-1/+40
| | | | | | | | | | It includes the following fix: 2426. [bug] libbind: inet_net_pton() can sometimes return the wrong value if excessively large netmasks are supplied. [RT #18512] Reported by: Maksymilian Arciemowicz <cxib__at__securityreason.com>
* Add thread-specific caching for small size classes, based on magazines.jasone2008-08-271-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | This caching allows for completely lock-free allocation/deallocation in the steady state, at the expense of likely increased memory use and fragmentation. Reduce the default number of arenas to 2*ncpus, since thread-specific caching typically reduces arena contention. Modify size class spacing to include ranges of 2^n-spaced, quantum-spaced, cacheline-spaced, and subpage-spaced size classes. The advantages are: fewer size classes, reduced false cacheline sharing, and reduced internal fragmentation for allocations that are slightly over 512, 1024, etc. Increase RUN_MAX_SMALL, in order to limit fragmentation for the subpage-spaced size classes. Add a size-->bin lookup table for small sizes to simplify translating sizes to size classes. Include a hard-coded constant table that is used unless custom size class spacing is specified at run time. Add the ability to disable tiny size classes at compile time via MALLOC_TINY.
* Turn execvpe() into an internal libc routine.ed2008-06-231-0/+3
| | | | | | | | | | | | Adding exevpe() has caused some ports to break. Even though execvpe() is a useful routine, it does not conform to any standards. This patch is a little bit different from the patch sent to the mailing list. I forgot to remove execvpe from the Symbol.map (which does not seem to miscompile libc, though). Reviewed by: davidxu Approved by: philip
* Make pthread_cleanup_push() and pthread_cleanup_pop() as a pair of macros,davidxu2008-06-092-4/+0
| | | | | | | use stack space to keep cleanup information, this eliminates overhead of calling malloc() and free() in thread library. Discussed on: thread@
* Add some compatibility code so that software which is built to use the newdfr2008-04-041-0/+3
| | | | | | | struct flock with l_sysid member can work properly on an an old kernel which doesn't support l_sysid. Sponsored by: Isilon Systems
* Add pthread_setaffinity_np and pthread_getaffinity_np to libc namespace.davidxu2008-04-022-0/+4
|
* Compile libthr with warnings.ru2008-03-251-0/+3
| | | | (Somehow this file sneaked from initial commit.)
* Compile libthr with warnings.ru2008-03-251-0/+3
|
* Add pthread_mutex_isowned_np() so there is no need for an additionaldes2008-02-062-0/+2
| | | | | | prototype next to the implementation. MFC after: 2 weeks
* Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate topeter2007-07-041-0/+23
| | | | | | | | | call the pad-less versions of the corresponding syscalls if the running kernel supports it. Check kern.osreldate once per program and cache the result to select the appropriate syscall. This maintains userland compatability with kernel.old's from quite a while back. Approved by: re (kensmith)
* Merge BIND 9.4.1 into main chunk.ume2007-06-031-2/+7
| | | | MFC after: 2 weeks
* This commit was generated by cvs2svn to compensate for changes in r170242,ume2007-06-031-1/+3
|\ | | | | | | which included commits to RCS files with non-trunk default branches.
| * Vendor import of BIND 9.4.1ume2007-06-031-1/+3
| |
* | Remove 3rd clause, renumber, ok per emailimp2007-01-122-8/+2
| |
* | Upgrade res_update(3) and the friends to BIND9's one excluding TSIGume2006-05-211-0/+7
| | | | | | | | | | | | support. X-MFC after: never
* | This commit was generated by cvs2svn to compensate for changes in r158782,ume2006-05-211-0/+112
|\ \ | |/ | | | | which included commits to RCS files with non-trunk default branches.
| * Vendor import of BIND 9.3.2ume2006-05-211-0/+112
| |
* | - Extend the nsswitch to support Services, Protocols and Rpcume2006-04-282-0/+304
| | | | | | | | | | | | | | | | databases. - Make nsswitch support caching. Submitted by: Michael Bushkov <bushman__at__rsu.ru> Sponsored by: Google Summer of Code 2005
* | Add semaphore functions, and remove some dupes from the #if 0 section.des2006-03-282-4/+20
| |
* | Add a bunch of missing pthread functions, and move out-of-order functions.des2006-03-282-13/+128
| |
* | We have gmtime_r(3).ume2006-03-211-0/+1
| |
* | - Merge our local changes.ume2006-03-212-0/+32
| | | | | | | | - Exclude unnecessary functions for us.
* | This commit was generated by cvs2svn to compensate for changes in r156952,ume2006-03-212-0/+249
|\ \ | |/ | | | | which included commits to RCS files with non-trunk default branches.
| * Vendor import of BIND 9.3.2ume2006-03-212-0/+249
|
* Add entries for new pthread stubs.davidxu2006-03-101-0/+30
|
* Add some more pthread stubs so that librt can use them.deischen2006-03-052-3/+63
| | | | | | | The thread jump table has been resorted, so you need to keep libc, libpthread, and libthr in sync. Submitted by: xu
* In preparation for a new malloc implementation:jasone2006-01-121-3/+4
| | | | | | | | | | | | | * Add posix_memalign(). * Move calloc() from calloc.c to malloc.c. Add a calloc() implementation in rtld-elf in order to make the loader happy (even though calloc() isn't used in rtld-elf). * Add _malloc_prefork() and _malloc_postfork(), and use them instead of directly manipulating __malloc_lock. Approved by: phk, markm (mentor)
* Move the declaration of __cleanup to libc_private.h as it is used in bothstefanf2005-09-121-0/+5
| | | | stdio/ and stdlib/. Don't define __cleanup twice.
* Add namespace #defines for usleep.deischen2005-08-032-0/+2
|
* Update my email address.das2005-02-061-1/+1
|
* Add support for TLS in statically linked programs.dfr2004-08-151-0/+9
|
* When a dynamic NSS module is built and linked against a threadnectar2004-03-301-1/+1
| | | | | | | | | | | | | library, it may pull in that thread library at run time. If the process started out single-threaded, this could cause attempts to release locks that do not exist. Guard against this possibility by checking __isthreaded before invoking thread primitives. A similar problem remains if the process is linked against one thread library, but the NSS module is linked against another. This can only be avoided by careful design of the NSS module. Submitted by: Sean McNeil <sean@mcneil.com> (mostly; bugs are mine)
* Make the resolver(3) and many associated interfaces much more reentrant.green2004-02-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The getaddrinfo(3), getipnodebyname(3) and resolver(3) can coincide now with what should be totally reentrant, and h_errno values will now be preserved correctly, but this does not affect interfaces such as gethostbyname(3) which are still mostly non-reentrant. In all of these relevant functions, the thread-safety has been pushed down as far as it seems possible right now. This means that operations that are selected via nsdispatch(3) (i.e. files, yp, dns) are protected still under global locks that getaddrinfo(3) defines, but where possible the locking is greatly reduced. The most noticeable improvement is that multiple DNS lookups can now be run at the same time, and this shows major improvement in performance of DNS-lookup threaded programs, and solves the "Mozilla tab serialization" problem. No single-threaded applications need to be recompiled. Multi-threaded applications that reference "_res" to change resolver(3) options will need to be recompiled, and ones which reference "h_errno" will also if they desire the correct h_errno values. If the applications already understood that _res and h_errno were not thread-safe and had their own locking, they will see no performance improvement but will not actually break in any way. Please note that when NSS modules are used, or when nsdispatch(3) defaults to adding any lookups of its own to the individual libc _nsdispatch() calls, those MUST be reentrant as well.
* Add a delta accidentally omitted from the previous commit:das2004-01-181-0/+3
| | | | | Define DBL_MANH_SIZE and DBL_MANL_SIZE to be the sizes of the high and low words of the mantissa in bits, respectively.
OpenPOWER on IntegriCloud