Commit Graph

875 Commits

Author SHA1 Message Date
Ulrich Drepper
01b597da40 Check for .cfi_{personality,lsda} on x86-64.
We need this support in NPTL now to avoid the hand-coded tables.
2009-07-23 17:15:56 -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
cba0ca7925 Unify source for async cancel handling.
Unify all three places where we enable async cancellation for
syscalls.  Optimize a bit.
2009-05-16 14:55:59 -07:00
Ulrich Drepper
d5c157a978 * cancellation.c (__pthread_disable_asynccancel): Use THREAD_ATOMIC_AND
is available.
	* libc-cancellation.c (__libc_disable_asynccancel): Likewise.
	* sysdeps/x86_64/tls.h: Define THREAD_ATOMIC_AND.
	* sysdeps/i386/tls.h: Likewise.
	(tcbhead_t): Add __private_tm member.
2009-04-27 21:55:49 +00: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
1f04d00542 * locale/langinfo.h: nl_langinfo_l is in POSIX 2008.
* locale/xlocale.h: Define locale_t type.
	* locale/locale.h: duplocale, freelocale, newlocale, uselocale are
	in POSIX 2008.  Don't define locale_t here.
	* stdlib/monetary.h: strfmon_l is in POSIX 2008.
	* signal/signal.h: Declare psignal and psiginfo for POSIX 2008.
	* stdio-common/psiginfo.c: New file.
	* stdio-common/psiginfo-data.h: New file.
	* stdio-common/psiginfo-define.h: New file.
	* stdio-common/Makefile (routines): Add psiginfo.
	* stdio-common/Versions: Export psiginfo for GLIBC_2.10.
2009-02-26 06:18:24 +00:00
Ulrich Drepper
77db439eaf * ctype/ctype.h: The *_l functions are in POSIX 2008.
* dirent/dirent.h: alphasort, dirfd, scandir, and fdopendir are in
	POSIX 2008.
	/proc/sys/kernel/rtsig_max doesn't exist anymore, use getrlimit
2009-02-26 02:23:50 +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
7f901dd7ca * sysdeps/pthread/unwind-forcedunwind.c: Encrypt all function
pointer variables.
2009-01-29 20:52:36 +00:00
Ulrich Drepper
cca50323b6 * allocatestack.c (__free_stacks): Renamed from free_stacks.
(__free_stack_cache): Removed.  Change callers to call __free_stacks.
	* init.c (nptl_freeres): New function.
	(pthread_functions): Initialize ptr_freeres to nptl_freeres.
	* pthreadP.h: Don't declare __free_stack_cache.  Declare __free_stacks.
	* sysdeps/pthread/unwind-forcedunwind.c (libgcc_s_handle): New
	variable.
	(pthread_cancel_init): Depend in libgcc_s_handle for decision to
	load DSO.  Assign last.
	(__unwind_freeres): New function.

	* allocatestack.c (__reclaim_stacks): Reset in_flight_stack later
	for better debugging.  No need to use stack_list_add here.
2009-01-29 20:38:04 +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
f25c7b087f * sysdeps/pthread/list.h (list_add): Initialize new element first.
(list_add_tail): Removed.
2009-01-08 18:32:16 +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
135460f45c [BZ #6545]
* sysdeps/unix/sysv/linux/bits/socket.h (SCM_CREDENTIALS): Make
	available only for __USE_GNU.
2008-12-09 23:25:02 +00:00
Ulrich Drepper
71bb26394a * sysdeps/x86_64/tls.h (tcbhead_t): Add fields reserved for TM
implementation.  Add necessary padding and.
	* descr.h (struct pthread): Increase padding for tcbhead_t to 24
	words.
2008-12-08 23:30:25 +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
Jakub Jelinek
4b23f9bda3 * bits/libc-tsd.h (__libc_tsd_define, __libc_tsd_address,
__libc_tsd_get, __libc_tsd_set): Add TYPE argument, use it as the type 
of the thread variable instead of void *. 
* sysdeps/mach/hurd/bits/libc-tsd.h (__libc_tsd_define, 
__libc_tsd_address, __libc_tsd_get, __libc_tsd_set): Likewise. 
* include/ctype.h (CTYPE_B, CTYPE_TOUPPER, CTYPE_TOLOWER): Adjust 
__libc_tsd_define arguments. 
(__ctype_b_loc, __ctype_toupper_loc, __ctype_tolower_loc): Adjust 
__libc_tsd_address arguments.  Remove union hack. 
* include/rpc/rpc.h (RPC_VARS): Adjust __libc_tsd_define arguments. 
* sunrpc/rpc_thread.c (RPC_VARS): Likewise. 
(__rpc_thread_destroy, rpc_thread_multi, __rpc_thread_variables): 
Adjust __libc_tsd_{set,get} arguments. 
* ctype/ctype-info.c (CTYPE_B, CTYPE_TOUPPER, CTYPE_TOLOWER): Adjust 
__libc_tsd_define arguments. 
* locale/uselocale.c (__uselocale): Adjust __libc_tsd_{set,get} 
arguments. 
* locale/lc-ctype.c (_nl_postload_ctype): Likewise. 
* locale/global-locale.c (__libc_tsd_LOCALE): Adjust type. 
(LOCALE): Adjust __libc_tsd_define arguments. 
* locale/localeinfo.h (_NL_CURRENT_LOCALE): Adjust __libc_tsd_get 
arguments. 
(LOCALE): Adjust __libc_tsd_define arguments. 
* sysdeps/mach/hurd/malloc-machine.h (MALLOC): Adjust __libc_tsd_define 
arguments. 
(tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get} 
arguments. nptl/ 
* sysdeps/pthread/malloc-machine.h (MALLOC): Adjust __libc_tsd_define 
arguments. 
(tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get} 
arguments.
2008-11-07  Jakub Jelinek  <jakub@redhat.com>

	* bits/libc-tsd.h (__libc_tsd_define, __libc_tsd_address,
	__libc_tsd_get, __libc_tsd_set): Add TYPE argument, use it as the type
	of the thread variable instead of void *.
	* sysdeps/mach/hurd/bits/libc-tsd.h (__libc_tsd_define,
	__libc_tsd_address, __libc_tsd_get, __libc_tsd_set): Likewise.
	* include/ctype.h (CTYPE_B, CTYPE_TOUPPER, CTYPE_TOLOWER): Adjust
	__libc_tsd_define arguments.
	(__ctype_b_loc, __ctype_toupper_loc, __ctype_tolower_loc): Adjust
	__libc_tsd_address arguments.  Remove union hack.
	* include/rpc/rpc.h (RPC_VARS): Adjust __libc_tsd_define arguments.
	* sunrpc/rpc_thread.c (RPC_VARS): Likewise.
	(__rpc_thread_destroy, rpc_thread_multi, __rpc_thread_variables):
	Adjust __libc_tsd_{set,get} arguments.
	* ctype/ctype-info.c (CTYPE_B, CTYPE_TOUPPER, CTYPE_TOLOWER): Adjust
	__libc_tsd_define arguments.
	* locale/uselocale.c (__uselocale): Adjust __libc_tsd_{set,get}
	arguments.
	* locale/lc-ctype.c (_nl_postload_ctype): Likewise.
	* locale/global-locale.c (__libc_tsd_LOCALE): Adjust type.
	(LOCALE): Adjust __libc_tsd_define arguments.
	* locale/localeinfo.h (_NL_CURRENT_LOCALE): Adjust __libc_tsd_get
	arguments.
	(LOCALE): Adjust __libc_tsd_define arguments.
	* sysdeps/mach/hurd/malloc-machine.h (MALLOC): Adjust __libc_tsd_define
	arguments.
	(tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get}
	arguments.
2008-11-07 15:07:10 +00:00
Ulrich Drepper
bf837fa36f [BZ #6843]
2008-10-31  Ulrich Drepper  <drepper@redhat.com>
	[BZ #6843]
	* sysdeps/pthread/gai_misc.h (__gai_create_helper_thread):
	Increase stack size for helper thread.
2008-11-01 00:20:07 +00:00
Ulrich Drepper
208bc83670 * misc/syslog.c (openlog_internal): Fix __have_sock_cloexec
initialization.
2008-10-22 21:45:13 +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