Commit Graph

657 Commits

Author SHA1 Message Date
Ulrich Drepper
421665c40a Optimize x86-64 syscall cancellation handling.
The syscall wrappers had to save and restore the syscall parameter
values and return value when calling the functions to enable/disable
cancellation were called.  Not anymore.  The called functions are
special and don't modify any unexpected registers.
2009-08-04 11:03:46 -07:00
Ulrich Drepper
b0948ffdcb Fix bookkeeping in mutex when using requeue_pi. 2009-07-28 09:40:39 -07:00
Ulrich Drepper
f1adf1f490 Fix pthread_cond_timedwait error handling on old kernels. 2009-07-23 16:39:06 -07:00
Ulrich Drepper
c3db953c16 Minor optimizations of last x86-64 condvar changes. 2009-07-20 08:39:47 -07:00
Ulrich Drepper
42e69bcf11 Support requeueing for condvars using PI mutex. x86-64 only.
Add support for the new FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI
options of futex.
2009-07-19 20:56:40 -07:00
Ulrich Drepper
515a8908ce Make x86-64 pthread_cond_timedwait more robust.
It just happens that __pthread_enable_asynccancel doesn't modify the $rdi
register.  But this isn't guaranteed.  Hence we reload the register after
the calls.
2009-07-19 14:54:56 -07:00
Ulrich Drepper
e2dca2fea3 Extend x86-64 __lll_robust_timedlock_wait to use futex syscall with absolute timeout. 2009-07-19 00:00:17 -07:00
Ulrich Drepper
32c6c342b6 Extend x86-64 pthread_rwlock_timedrdlock to use futex syscall with absolute timeout. 2009-07-18 21:53:26 -07:00
Ulrich Drepper
4c74e6522a Pretty printing last change. 2009-07-18 21:41:52 -07:00
Ulrich Drepper
d979611eb9 Extend x86-64 pthread_rwlock_timedwrlock to use futex syscall with absolute timeout. 2009-07-18 21:35:33 -07:00
Ulrich Drepper
d9201c1365 Remove leftover cfi. 2009-07-18 13:08:21 -07:00
Ulrich Drepper
e88726b483 Extend x86-64 pthread_cond_timedwait to use futex syscall with absolute timeout. 2009-07-18 12:44:12 -07:00
Ulrich Drepper
92618c954f Optimize x86-64 pthread_cond_timedwait.
Instead of actively registering an unwind buffer we now use the
exception handling functionality of the gcc runtime.
2009-07-18 08:53:18 -07:00
Ulrich Drepper
30b1954abb Optimize x86-64 pthread_cond_wait.
Instead of actively registering an unwind buffer we now use the
exception handling functionality of the gcc runtime.
2009-07-18 08:09:39 -07:00
Ulrich Drepper
f351f2b756 Extend x86-64 sem_timedwait to use futex syscall with absolute timeout. 2009-07-17 19:08:54 -07:00
Ulrich Drepper
312d667b85 Consistently use symbolic constants. 2009-07-17 16:39:27 -07:00
Ulrich Drepper
aee2665a17 Replace hand-coded unwind tables from x86-64 sem_timedwait. 2009-07-17 16:26:06 -07:00
Ulrich Drepper
0adae46817 Optimize x86-64 sem_wait for uncontested semaphore. 2009-07-17 15:50:23 -07:00
Ulrich Drepper
c3c2f3cf56 Replace hand-coded unwind tables from x86-64 sem_wait. 2009-07-17 15:31:36 -07:00
Ulrich Drepper
63601ccd16 Replace hand-coded unwind tables from x86-64 pthread_once. 2009-07-17 14:45:08 -07:00
Ulrich Drepper
d52c96e73a Replace hand-coded unwind tables from x86-64 pthread_cond_wait. 2009-07-17 12:14:09 -07:00
Ulrich Drepper
bfdb73e145 Implement pthread_sigqueue.
The kernel from 2.3.31 on supports the rt_tgsigqueueinfo syscall.
Use it to implement the non-standard extension which, like
sigqueue, can pass additional data to the receiving thread.
2009-06-12 08:34:02 -07:00
Bryan Kadzban
1828530f09 Fix futex syscall parameter for x86 absolute timeout waits.
This affects only installations compiled for kernels older than 2.6.18.
2009-06-11 11:32:51 -07:00
Ulrich Drepper
f521be31b9 * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
Avoid warning by using may_alias attribute on ptrhack.
2009-04-26 18:06:47 +00:00
Ulrich Drepper
71a5bd3e17 [BZ #5807]
2009-03-15  Ulrich Drepper  <drepper@redhat.com>
	[BZ #5807]
	* string/strlen.c (strlen): Fix omission in the expression to test
	for NUL bytes.
2009-03-15 09:03:38 +00:00
Jakub Jelinek
9920a6b8db * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Define
FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME and 
FUTEX_BITSET_MATCH_ANY.
2009-03-09  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Define
	FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME and
	FUTEX_BITSET_MATCH_ANY.
2009-03-09 14:19:53 +00:00
Ulrich Drepper
6cbe890a9d * wctype/wctype.h: The *_l functions are in POSIX 2008.
* wcsmbs/wchar.h: mbsnrtowcs, open_wmemstream, wcpcpy, wcpncpy,
	wcscasecmp, wcsdup, wcsncasecmp, wcsnlen, wcsnrtombs,
	wcscasecmp_l, wcsncasecmp_l, wcscoll_l, and wcsxfrm_l.
	* sysdeps/mach/hurd/bits/posix_opt.h: Reset value of macros from
	200112L to 200809L.
	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
	* posix/getconf.c (vars): Add _SC_THREAD_ROBUST_PRIO_INHERIT and
	_SC_THREAD_ROBUST_PRIO_PROTECT entries.
	* bits/confname.h: Add _SC_THREAD_ROBUST_PRIO_INHERIT and
	_SC_THREAD_ROBUST_PRIO_PROTECT.
	* posix/unistd.h: fexecve is in POSIX 2008.
	* time/time.h: strftime_l is in POSIX 2008.
	* io/sys/stat.h: futimens is in POSIX 2008.
	* string/strings.h: strcasecmp_l and strncasecmp_l are in POSIX 2008.
	* string/string.h: stpcpy, stpncpy, strndup, strnlen, strsignal,
	strcoll_l, strerror_l, and strxfrm_l are in POSIX 2008.
	* stdlib/stdlib.h: mkdtemp is in POSIX 2008.
2009-02-26 16:53:30 +00:00
Ulrich Drepper
8c4a5f4214 * io/sys/stat.h: The lstat functions have been mandatory since 2001. 2009-02-24 22:47:58 +00:00
Ulrich Drepper
4c869eb67e * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
LOAD_FUTEX_WAIT_ABS even if (FUTEX_WAIT == 0).
2009-02-13 23:36:40 +00:00
Ulrich Drepper
a7bd183ffe * sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL):
Add "t" to clobber list.
	(INTERNAL_SYSCALL_NCS): Likewise.
2009-01-28 16:11:36 +00:00
Ulrich Drepper
45f7760695 (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_READTIME instead of computing relative timeout. 2009-01-03 23:17:21 +00:00
Ulrich Drepper
b2bcd249bf * sysdeps/unix/sysv/linux/i386/sysdep.h: Describe 6th argument
handling.
2009-01-03 20:36:44 +00:00
Ulrich Drepper
cbd8aeb836 * init.c (__pthread_initialize_minimal_internal): Check for
FUTEX_CLOCK_REALTIME flag.
	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
	Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_READTIME instead of computing
	relative timeout.
2009-01-03 05:06:46 +00:00
Ulrich Drepper
7dd650d7fc * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
	* sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
	* sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
2009-01-03 03:45:07 +00:00
Ulrich Drepper
6de79a4991 * pthread_mutex_lock.c (__pthread_mutex_lock): Handle only the
fast path here, for robust/PI/PP mutexes call
	__pthread_mutex_lock_full.  Don't use switch, instead use a series
	of ifs according to their probability.
	(__pthread_mutex_lock_full): New function.
	* pthread_mutex_unlock.c: Include assert.h.
	(__pthread_mutex_unlock_usercnt): Handle only the
	fast path here, for robust/PI/PP mutexes call
	__pthread_mutex_unlock_full.  Don't use switch, instead use a series
	of ifs according to their probability.
	(__pthread_mutex_unlock_full): New function.
	* sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
	(__pthread_mutex_lock_full): Define.
2008-12-12 18:46:28 +00:00
Ulrich Drepper
261d16fece * posix/regex_internal.h (build_wcs_upper_buffer):
Return type is reg_error_t.
2008-12-06 00:13:04 +00:00
Ulrich Drepper
da5ac1352d * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname3_r): Recognize
ESRCH return value.
	(_nss_dns_gethostbyname4_r): Likewise.
	* resolv/res_init.c (__res_vinit): Initialize nscount to zero.
	* sysdeps/posix/getaddrinfo.c (gaih_inet): In case we use
	gethostbyname4_r, we don't have a separate IPv6 status, so copy
	the no_data variable.
2008-12-03 07:30:39 +00:00
Roland McGrath
c0439b95b8 Moved alpha to ports repository.
2008-11-25  Roland McGrath  <roland@redhat.com>

	* sysdeps/alpha, sysdeps/unix/bsd/osf/alpha,
	sysdeps/unix/bsd/Attic/osf1/alpha, sysdeps/unix/sysv/linux/alpha,
	sysdeps/unix/sysv/linux/alpha/alpha, sysdeps/unix/alpha,
	sysdeps/mach/alpha, sysdeps/mach/hurd/alpha:
	Subdirectories moved to ports repository.
	* configure.in (base_machine): Remove alpha case.
2008-11-26 07:26:32 +00:00
Ulrich Drepper
af62b44029 * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Add memory barrier
to force runp->refcntr to be read from memory.
2008-10-06 16:47:10 +00:00
Andreas Jaeger
2458c74851 * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_lock,
lll_robust_lock, lll_cond_lock, lll_robust_cond_lock, 
lll_timedlock, lll_robust_timedlock, lll_unlock, 
lll_robust_unlock): Promote private to int.
2008-09-08  Richard Guenther  <rguenther@suse.de>

	* sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_lock,
	lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
	lll_timedlock, lll_robust_timedlock, lll_unlock,
	lll_robust_unlock): Promote private to int.
2008-09-23 18:50:28 +00:00
Ulrich Drepper
7b91359b2c * Makeconfig: Define pie-ccflag and PIE-ccflag variables.
* elf/Makefile: Use pie-ccflag variable.
	* nscd/Makefile: Likewise.
	* sysdeps/sparc/Makefile: Set $(pie-ccflag) to -fPIE.
2008-07-26 22:22:24 +00:00
Ulrich Drepper
8ccf22f934 * include/rpc/clnt.h: Declare __libc_clntudp_bufcreate and
__libc_clntudp_bufcreate_internal.
	* include/sys/socket.h: Declare __have_sock_cloexec.
	* socket/Makefile (aux): Add have_sock_cloexec.
	* socket/have_sock_cloexec.c: New file.
	* sunrpc/clnt_udp.h (clntudp_bufcreate): Now a wrapper around
	__libc_clntudp_bufcreate.
	(__libc_clntudp_bufcreate): Former implementation of clntudp_bufcreate
	which takes an additional parameter.  Create socket with non-blocking
	mode and close-on-exec flag set, if wanted.
	* sunrpc/Versions: Export __libc_clntudp_bufcreate@GLIBC_PRIVATE.
	* nis/ypclnt.c (yp_bind_client_create): Use __libc_clntpudp_bufcreate
	instead of clntudp_create.  The socket has already the close-on-exec
	flag set if SOCK_CLOEXEC is defined.
2008-07-25 17:06:50 +00:00
Ulrich Drepper
62605cbfcb Remove useless more "if" tests before "free".
* include/inline-hashtab.h (htab_delete): Likewise.
	* libio/freopen.c (freopen): Likewise.
	* libio/freopen64.c (freopen64): Likewise.
	* locale/programs/ld-collate.c (collate_read): Likewise.
	* misc/fstab.c (libc_freeres_fn): Likewise.
	* posix/glob.c (globfree): Likewise.
2008-05-27 06:04:07 +00:00
Jakub Jelinek
3b15b590b7 * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file.
2008-05-19  Jakub Jelinek  <jakub@redhat.com>

	* elf/soinit.c (__EH_FRAME_BEGIN__): Remove.
2008-05-20 07:42:00 +00:00
Ulrich Drepper
cdffaaa615 * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Access
__pshared correctly.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
	Likewise.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
	Likewise.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
	Likewise.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S:
	Likewise.
	Reported by Clemens Kolbitsch <clemens.kol@gmx.at>.
2008-05-11 05:42:25 +00:00
Jakub Jelinek
2313c48fa9 * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
(__old_sem_wait): Fix argument to lll_futex_wait().
2008-04-14  David S. Miller  <davem@davemloft.net>

	* sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
	(__old_sem_wait): Fix argument to lll_futex_wait().
2008-04-15 15:00:30 +00:00
Jakub Jelinek
d24be489a1 [BZ #6020]
* sysdeps/unix/sysv/linux/sparc/lowlevellock.h 
(lll_futex_wake_unlock): Add private argument to the pre-v9 macro. 
Patch by Sunil Amitkumar Janki <devel.sjanki@gmail.com>.
2008-04-08  Jakub Jelinek  <jakub@redhat.com>

	[BZ #6020]
	* sysdeps/unix/sysv/linux/sparc/lowlevellock.h
	(lll_futex_wake_unlock): Add private argument to the pre-v9 macro.
	Patch by Sunil Amitkumar Janki <devel.sjanki@gmail.com>.
2008-04-08 06:36:47 +00:00
Ulrich Drepper
f96853beaf * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefined ARG_MAX if
<linux/limits.h> has defined it.
	* sysdeps/unix/sysv/linux/sys/param.h: Define NCARGS to the legacy
	ARG_MAX value and prevent ARG_MAX from being defined by the kernel
	headers.
	* sysdeps/unix/sysv/linux/sysconf.c: Define legacy_ARG_MAX and use
	it instead of ARG_MAX.
2008-03-27 15:20:38 +00:00
Jakub Jelinek
354b75277b * sysdeps/unix/sysv/linux/dl-sysdep.h: Use __ASSEMBLER__ instead
of ASSEMBLER. nptl/ 
* sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Use __ASSEMBLER__ instead 
of ASSEMBLER. 
* sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: Likewise. 
* sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Likewise.
2008-03-18  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/dl-sysdep.h: Use __ASSEMBLER__ instead
	of ASSEMBLER.
2008-03-17 23:41:58 +00:00
Ulrich Drepper
4564918515 Fix typo. 2008-03-14 21:52:57 +00:00