2010-01-15 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Fix unwind info. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise. 2010-01-15 Michal Schmidt <mschmidt@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Fix pthread_cond_timedwait with requeue-PI. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Fix pthread_cond_wait with requeue-PI. 2010-01-14 Ulrich Drepper <drepper@redhat.com> * Versions: Add pthread_mutex_consistent, pthread_mutexattr_getrobust, and pthread_mutexattr_setrobust for GLIBC_2.12. * pthread_mutex_consistent.c: Define alias pthread_mutex_consistent. * pthread_mutexattr_getrobust.c: Define alias pthread_mutexattr_getrobust. * pthread_mutexattr_setrobust.c: Define alias pthread_mutexattr_setrobust. 2010-01-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/pthread.h: Cleanup. Fix up for XPG7. 2010-01-08 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/pthread.h: Fix pthread_mutex_consistent declaration. 2009-12-18 Thomas Schwinge <thomas@codesourcery.com> * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c (_init): Don't call __gmon_start__. * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c (_init): Likewise. 2009-12-17 Ulrich Drepper <drepper@redhat.com> * pthread_rwlock_init.c (__pthread_rwlock_init): Simplify code by using memset. 2009-12-01 Dinakar Guniguntala <dino@in.ibm.com> * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.h: Define FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: If mutex is a non robust PI mutex, then use FUTEX_CMP_REQUEUE_PI. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: If mutex is a non robust PI mutex, then use FUTEX_WAIT_REQUEUE_PI. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise. 2009-12-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait): Don't update nwaiters after invalid timeout is recognized. 2009-11-27 Thomas Schwinge <thomas@codesourcery.com> * sysdeps/unix/sysv/linux/sh/pt-initfini.c (_init): Don't call __gmon_start__. 2009-11-27 Andreas Schwab <schwab@redhat.com> * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload THREAD_SELF->cancelhandling after returning from futex call. 2009-11-24 Ulrich Drepper <drepper@redhat.com> * tst-sem13.c: New file. * Makefile (tests): Add tst-sem13. 2009-11-22 Roland McGrath <roland@redhat.com> * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: # include "i686/dl-sysdep.h" instead of recapitulating its contents. 2009-11-18 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Minor optimizations and cleanups. 2009-11-18 Dinakar Guniguntala <dino@in.ibm.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Remove redundant code. Fix cfi offsets. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Fix cfi offsets. 2009-11-17 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Minimally reduce size of unwind info. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Convert to use cfi directives. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise. Based on a patch by Dinakar Guniguntala <dino@in.ibm.com>. 2009-11-03 Andreas Schwab <schwab@linux-m68k.org> [BZ #4457] * sysdeps/pthread/unwind-resume.c: Include <libgcc_s.h> and use LIBGCC_S_SO. * sysdeps/pthread/unwind-forcedunwind.c: Likewise. 2009-10-30 Ulrich Drepper <drepper@redhat.com> * tst-sem11.c (main): Rewrite to avoid aliasing problems. [BZ #3270] * allocatestack.c (__nptl_setxid): Perform the operation in multiple steps to avoid races with creation and terminations. * nptl-init.c (sighandler_setxid): Adjust. Patch by Daniel Jacobowitz. 2009-09-07 Andreas Schwab <schwab@redhat.com> * sysdeps/pthread/bits/libc-lock.h (BP_SYM): Remove space before paren. 2009-09-02 Suzuki K P <suzuki@in.ibm.com> Joseph Myers <joseph@codesourcery.com> [BZ #7094] * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Initialize the sigev_notify field for newly created timer to make sure the timer gets deleted from the active timer's list upon timer_delete. 2009-08-27 Andrew Stubbs <ams@codesourcery.com> * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait): Correct a logic error. 2009-08-25 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/tls.h (RTLD_ENABLE_FOREIGN_CALL): Store old value of the field in local variables. (RTLD_FINALIZE_FOREIGN_CALL): Restore rtld_must_xmm_save from local variable and don't unconditionally clear it. 2009-08-24 Ulrich Drepper <drepper@redhat.com> * pthread_create.c (start_thread): Hint to the kernel that memory for the stack can be reused. We do not mark all the memory. The part still in use and some reserve are kept. 2009-08-23 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/bits/posix_opt.h: Clean up namespace. 2009-08-11 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Add CFI directives. 2009-08-10 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Add CFI directives. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise. 2009-08-10 Andreas Schwab <schwab@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S (__pthread_cond_signal): Don't clobber register used for syscall number. 2009-08-08 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): Optimize code path used when FUTEX_CLOCK_REALTIME is supported. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__pthread_cond_wait): Optimize by avoiding use of callee-safe register. 2009-08-07 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Little optimizations enabled by the special *_asynccancel functions. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Include lowlevellock.h. 2009-08-04 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/cancellation.S: New file. * sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S: New file. * sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S: New file. * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Optimize since we can assume the special __*_{en,dis}able_asynccancel functions. (PUSHARGS_*, POPARGS_*, SAVESTK_*, RESTSTK_*): Removed. * sysdeps/x86_64/tcb-offsets.sym: Add cancellation-related bits and PTHREAD_CANCELED. 2009-07-31 Ulrich Drepper <drepper@redhat.com> * descr.h: Better definition of *_BITMASK macros for cancellation. 2009-07-29 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Define explicitly to 32. * sysdeps/x86_64/tls.h (tcbhead_t): Add room for SSE registers the dynamic linker might have to save. Define RTLD_CHECK_FOREIGN_CALL, RTLD_ENABLE_FOREIGN_CALL, RTLD_PREPARE_FOREIGN_CALL, and RTLD_FINALIZE_FOREIGN_CALL. Pretty printing. * sysdeps/x86_64/tcb-offsets.sym: Add RTLD_SAVESPACE_SSE. 2009-07-28 Ulrich Drepper <drepper@redhat.com> * pthread_mutex_lock.c [NO_INCR] (__pthread_mutex_cond_lock_adjust): New function. * pthreadP.h: Declare __pthread_mutex_cond_lock_adjust. * sysdeps/unix/sysv/linux/pthread-pi-defines.sym: Add ROBUST_BIT. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Don't use requeue_pi for robust mutexes. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. Don't only skip __pthread_mutex_cond_lock. Call instead __pthread_mutex_cond_lock_adjust. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Minor optimization of PI mutex handling. 2009-07-27 Ulrich Drepper <drepper@redhat.com> [BZ #10418] * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Use _rel instead of of _acq variants of cmpxchg. 2009-07-23 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/configure.in: New file. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix error path when not using absolute timeout futex. 2009-07-20 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Minor optimizations of last changes. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. 2009-07-19 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: If mutex is a PI mutex, then use FUTEX_CMP_REQUEUE_PI. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: If mutex is a PI mutex, then use FUTEX_WAIT_REQUEUE_PI. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__pthread_cond_timedwait): Make more robust. 2009-07-18 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S (__lll_robust_timedlock_wait): If possible use FUTEX_WAIT_BITSET to directly use absolute timeout. * tst-sem5.c (do_test): Add test for premature timeout. * Makefile: Linu tst-sem5 with librt. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S (pthread_rwlock_timedwrlock): If possible use FUTEX_WAIT_BITSET to directly use absolute timeout. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S (pthread_rwlock_timedrdlock): Likewise. * tst-cond11.c (run_test): Add test to check that the timeout is long enough. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__pthread_cond_timedwait): If possible use FUTEX_WAIT_BITSET to directly use absolute timeout. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__pthread_cond_wait): Convert to using exception handler instead of registered unwind buffer. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__pthread_cond_timedwait): Likewise. 2009-07-17 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): If possible use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME to directly use absolute timeout. * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Optimize handling of uncontested semaphore. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__condvar_cleanup): Rewrite to use cfi directives instead of hand-coded unwind tables. * sysdeps/unix/sysv/linux/x86_64/pthread_once.S (__pthread_once): Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): Likewise. 2009-06-12 Ulrich Drepper <drepper@redhat.com> * Makefile (libpthread-routines): Add pthread_sigqueue. * Versions: Add pthread_sigqueue for GLIBC_2.11. * sysdeps/pthread/bits/sigthread.h: Declare pthread_sigqueue. * sysdeps/unix/sysv/linux/pthread_sigqueue.c: New file. 2009-06-11 Ulrich Drepper <drepper@redhat.com> [BZ #10262] * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S (LOAD_FUTEX_WAIT_ABS): Fix futex parameter in case private futexes cannot be assumed. Patch by Bryan Kadzban <bz-glibc@kdzbn.homelinux.net>. 2009-05-16 Ulrich Drepper <drepper@redhat.com> * libc-cancellation.c: Move __libc_cleanup_routine to... * libc-cleanup.c: ...here. New file. * Makefile (routines): Add libc-cleanup. * cancellation.c (__pthread_disable_asynccancel): Remove unnecessary test. * libc-cancellation.c: Use <nptl/cancellation.c: to define the code. * sysdeps/pthread/librt-cancellation.c: Likewise. [BZ #9924] * nptl-init.c: Renamed from init.c. * Makefile: Change all occurences of init.c to nptl-init.c. 2009-05-15 Ulrich Drepper <drepper@redhat.com> * cancellation.c (__pthread_disable_asynccancel): Correct the bits to test when deciding on the delay. * libc-cancellation.c (__libc_disable_asynccancel): Likewise. * pthread_cancel.c: Close race between deciding on sending a signal and setting the CANCELING_BIT bit. * cancellation.c (__pthread_disable_asynccancel): Don't return if thread is canceled. * libc-cancellation.c (__libc_disable_asynccancel): Likewise. 2009-04-27 Ulrich Drepper <drepper@redhat.com> * 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-26 Ulrich Drepper <drepper@redhat.com> * sem_open.c (sem_open): Rewrite initialization of initsem to avoid warnings. * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init): Avoid warning by using may_alias attribute on ptrhack. 2009-04-22 Ulrich Drepper <drepper@redhat.com> [BZ #10090] * pthread_attr_setschedparam.c (__pthread_attr_setschedparam): Check policy and priority for validity. Patch mostly by Zhang Xiliang <zhangxiliang@cn.fujitsu.com>. 2009-03-15 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__pthread_cond_timedwait): Change to use cfi directives instead of hand-coded unwind sections. 2009-03-10 Ulrich Drepper <drepper@redhat.com> * init.c (nptl_freeres): Compile only for SHARED. 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-02-27 Roland McGrath <roland@redhat.com> * init.c (__nptl_initial_report_events): Mark __attribute_used__. * pthread_create.c (__nptl_threads_events, __nptl_last_event): Likewise. 2009-02-26 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _POSIX_THREAD_ROBUST_PRIO_INHERIT and _POSIX_THREAD_ROBUST_PRIO_PROTECT. Reset value of macros from 200112L to 200809L. 2009-02-25 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/pthread.h: The robust mutex functions are in POSIX 2008. 2009-02-24 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/bits/posix_opt.h (_BITS_POSIX_OPT_H): Unify name of include protector macro. 2009-02-14 SUGIOKA Toshinobu <sugioka@itonet.co.jp> * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define LOAD_FUTEX_WAIT_ABS even if (FUTEX_WAIT == 0). 2009-01-29 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/unwind-forcedunwind.c: Encrypt all function pointer variables. * 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-14 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME instead of computing relative timeout. * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY. 2009-01-25 Ulrich Drepper <drepper@redhat.com> * pthread_mutex_lock.c (__pthread_mutex_lock): Remove unused label out. 2009-01-08 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/list.h (list_add): Initialize new element first. (list_add_tail): Removed. 2009-01-07 Ulrich Drepper <drepper@redhat.com> * (in_flight_stack): New variable. (stack_list_del): New function. Use instead of list_del. (stack_list_add): New function. Use instead of list_add when adding to stack_cache and stack_used lists. (__reclaim_stacks): Complete operations on stack_cache and stack_used lists when the fork call interrupted another thread. 2009-01-04 Ulrich Drepper <drepper@redhat.com> * init.c (__pthread_initialize_minimal_internal): Optimize test FUTEX_CLOCK_REALTIME a bit. 2009-01-03 Ulrich Drepper <drepper@redhat.com> * init.c (__pthread_initialize_minimal_internal): Cheat a bit by only passing five parameters to FUTEX_WAIT_BITSET call. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME instead of computing relative timeout. 2009-01-02 Ulrich Drepper <drepper@redhat.com> * 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_REALTIME instead of computing relative timeout. * 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. 2008-12-09 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/pthread.h (pthread_cleanup_pop): Use { } as empty loop body instead of ; to avoid gcc warnings. (pthread_cleanup_pop_restore_np): Likewise. Patch by Caolán McNamara <caolanm@redhat.com>. 2008-12-09 Jakub Jelinek <jakub@redhat.com> * 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-08 Ulrich Drepper <drepper@redhat.com> * 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-04 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define FUTEX_WAIT_BITSET and FUTEX_WAKE_BITSET. 2008-12-02 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_WAIT_BITSET and FUTEX_WAKE_BITSET. * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. 2008-11-25 Roland McGrath <roland@redhat.com> * sysdeps/alpha, sysdeps/unix/sysv/linux/alpha: Subdirectories moved to ports repository as sysdeps/.../nptl subdirectories. 2008-11-12 Jakub Jelinek <jakub@redhat.com> [BZ #7008] * pthread_condattr_setclock.c (pthread_condattr_setclock): Fix masking of old value. * pthread_cond_init.c (__pthread_cond_init): Fix cond->__data.__nwaiters initialization. * Makefile (tests): Add tst-cond23. * tst-cond23.c: New test. 2008-11-07 Jakub Jelinek <jakub@redhat.com> * sysdeps/pthread/malloc-machine.h (MALLOC): Adjust __libc_tsd_define arguments. (tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get} arguments. 2008-11-01 Ulrich Drepper <drepper@redhat.com> [BZ #6955] * pthread_mutex_lock.c: Add support for private PI mutexes. * pthread_mutex_timedlock.c: Likewise. * pthread_mutex_trylock.c: Likewise. * pthread_mutex_unlock.c: Likewise. Patch mostly by Ben Jackson <ben@ben.com>. 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-10-06 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/s390/tls.h (THREAD_SET_STACK_GUARD): Add empty inline assembly with a clobber list for access registers a0 and a1. 2008-09-11 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Add memory barrier to force runp->refcntr to be read from memory. 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-08-15 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/pthreaddef.h: Remove ARCH_MAP_FLAGS and ARCH_RETRY_MMAP definitions. * allocatestack.c: Remove definition of ARCH_MAP_FLAGS. Define MAP_STACK when not defined. (allocate_stack): Use MAP_STACK instead of ARCH_MAP_FLAGS. Remove handling of ARCH_RETRY_MMAP. 2008-07-30 Ulrich Drepper <drepper@redhat.com> * tst-align2.c (f): Print message that f is reached. 2008-04-28 Hiroki Kaminaga <kaminaga@sm.sony.co.jp> [BZ #6740] * sysdeps/powerpc/tcb-offsets.sym (PRIVATE_FUTEX_OFFSET): Guard symbol definition with #ifndef __ASSUME_PRIVATE_FUTEX. 2008-07-25 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/mq_notify.c (init_mq_netlink): Use SOCK_CLOEXEC if possible. 2008-05-29 Ulrich Drepper <drepper@redhat.com> * Makefile (tests): Add tst-rwlock2a. * tst-rwlock2.c: Use TYPE macro to decide what rwlock type to use. * tst-rwlock2a.c: New file. 2008-06-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/pthread.h: Remove inadvertant checkin. 2008-05-17 Samuel Thibault <samuel.thibault@ens-lyon.org> * sysdeps/pthread/pthread.h: Fix typo in comment. 2008-05-28 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/createthread.c (do_clone): Pass accurate length of CPU set to the kernel. 2008-05-23 Paul Pluzhnikov <ppluzhnikov@google.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Add cfi directives. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise. 2008-05-22 Paul Pluzhnikov <ppluzhnikov@google.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Add cfi directives. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: Likewise. 2008-05-26 Ulrich Drepper <drepper@redhat.com> * tst-typesizes.c: Explicitly check __SIZEOF_PTHREAD_* constants. 2008-05-20 Jakub Jelinek <jakub@redhat.com> David S. Miller <davem@davemloft.net> * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file. 2008-05-10 Ulrich Drepper <drepper@redhat.com> * 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-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(). 2007-11-26 Daniel Jacobowitz <dan@codesourcery.com> * pthread_create.c: Require pthread_mutex_trylock and pthread_key_delete for libgcc. 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-03-27 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine ARG_MAX if <linux/limits.h> has defined it. * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise. * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise. 2008-03-18 Jakub Jelinek <jakub@redhat.com> * 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-14 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define HAVE_DL_DISCOVER_OSVERSION. * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: Likewise. * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Likewise. 2008-03-07 Ulrich Drepper <drepper@redhat.com> [BZ #5778] * sysdeps/unix/sysv/linux/bits/posix_opt.h: Change _POSIX_CHOWN_RESTRICTED value to zero. 2008-01-31 Roland McGrath <roland@redhat.com> * Makefile (omit-deps): Variable removed. 2008-01-30 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/sem_post.S (sem_post): Avoid unnecessary addr32 prefix. 2008-01-29 Roland McGrath <roland@redhat.com> * Makeconfig (ptw-CPPFLAGS, sysd-rules-patterns): New variables. 2008-01-22 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/sem_post.S: Don't overflow value field. 2008-01-21 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XADD): Use a scratch register. * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_lock_wait_private): Fix typo. * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S (pthread_barrier_wait): Likewise. Adjust XADD use. * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post): Adjust XADD use. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S (pthread_rwlock_timedrdlock): Return correct return value. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S (pthread_rwlock_timedwrlock): Likewise. 2008-01-15 Ulrich Drepper <drepper@redhat.com> * tst-eintr2.c (do_test): make sure that if mutex_lock in main thread returns the program exits with an error code. 2008-01-10 Ulrich Drepper <drepper@redhat.com> * pthread-errnos.sym: Add EOVERFLOW. * sysdeps/unix/sysv/linux/structsem.sym: Add SEM_VALUE_MAX. * sysdeps/unix/sysv/linux/sem_post.c: Don't overflow value field. * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise. 2007-12-14 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/pthreaddef.h (ARCH_RETRY_MMAP): Take additional parameter. Passed it as permission to mmap. * allocatestack.c (allocate_stack): Pass prot as second parameter to ARCH_RETRY_MMAP. 2007-12-12 Ulrich Drepper <drepper@redhat.com> * tst-basic7.c: Allocate memory for the stack. [BZ #5465] * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S [!SHARED] (__pthread_cond_timedwait): Don't use VDSO. Patch by Michal Januszewski. 2007-12-07 Ulrich Drepper <drepper@redhat.com> [BZ #5455] * sysdeps/pthread/pthread.h [!__EXCEPTIONS] (pthread_cleanup_pop): Allow label before pthread_cleanup_pop. (pthread_cleanup_pop_restore_np): Likewise. 2007-12-04 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait): Store 2 before returning ETIMEDOUT. 2007-11-23 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait): Store 2 before returning ETIMEDOUT. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise. (__lll_lock_wait_private): Optimize. (__lll_lock_wait): Likewise. 2007-11-20 Jakub Jelinek <jakub@redhat.com> * sysdeps/pthread/pthread.h (pthread_cleanup_push, pthread_cleanup_push_defer_np): Add extra (void *) cast to shut up g++ 4.1 and 4.2 -Wstrict-aliasing warnings. 2007-11-08 Ulrich Drepper <drepper@redhat.com> [BZ #5240] * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait): If we time out, try one last time to lock the futex to avoid losing a wakeup signal. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise. [BZ #5245] * sysdeps/pthread/createthread.c (do_clone): Translate clone error if necessary. 2007-11-07 Ulrich Drepper <drepper@redhat.com> [BZ #5245] * allocatestack.c (allocate_stack): Change ENOMEM error in case mmap failed to EAGAIN. * Makefile (tests): Add tst-basic7. * tst-basic7.c: New file. 2007-11-05 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork): Use __linkin_atfork. 2007-11-03 Mike Frysinger <vapier@gentoo.org> * sysdeps/unix/sysv/linux/sh/lowlevellock.S (LOAD_FUTEX_WAIT): Add missing line continuations. * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S (LOAD_FUTEX_WAIT, LOAD_FUTEX_WAKE): Likewise. Also add missing 3rd parameter. 2007-10-28 Ulrich Drepper <drepper@redhat.com> [BZ #5220] * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Declare __active_timer_sigev_thread and __active_timer_sigev_thread_lock. (struct timer): Add next element. * sysdeps/unix/sysv/linux/timer_create.c: For SIGEV_THREAD timers, enqueue timer structure into __active_timer_sigev_thread list. * sysdeps/unix/sysv/linux/timer_delete.c: For SIGEV_THREAD timers, remove timer struct from __active_timer_sigev_thread. * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread): Before using timer structure make sure it is still on the __active_timer_sigev_thread list. Keep lock until done. Define __active_timer_sigev_thread and __active_timer_sigev_thread_lock. 2007-10-27 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/malloc-machine.h: Define ATFORK_MEM. Redefine thread_atfork for use of ATFORK_MEM. * sysdeps/unix/sysv/linux/fork.h: Define __linkin_atfork. * sysdeps/unix/sysv/linux/register-atfork.c (__linkin_atfork): New function. * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork): Use atomic operation when removing first element of list. 2007-10-17 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New routine instead of an alias to __new_sem_post. 2007-10-15 Jakub Jelinek <jakub@redhat.com> * init.c (__pthread_initialize_minimal): Initialize word to appease valgrind. 2007-10-10 Jakub Jelinek <jakub@redhat.com> * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of libc.so just clear NAME. (__libc_rwlock_fini): Nop inside of libc.so. * tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is all zeros. 2007-09-02 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__pthread_cond_wait): Fix unlocking of internal lock after mutex unlocking failed. Patch by Luca Barbieri <luca.barbieri@gmail.com>. 2007-08-21 Ulrich Drepper <drepper@redhat.com> [BZ #4938] * allocatestack.c (__reclaim_stacks): Clear the TSD in the reclaimed stack if necessary. * Makefile (tests): Add tst-tsd6. * tst-tsd6.c: New file. 2007-08-21 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_dead): Add private argument. 2007-08-20 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__pthread_cond_timedwait): Use clock_gettime from VDSO if possible. 2007-08-16 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (__lll_robust_timedlock): Pass private as last argument to __lll_robust_timedlock_wait. (__lll_unlock): Fix a pasto. 2007-08-15 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/sparc/internaltypes.h (sparc_new_sem, sparc_old_sem): New structs. * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c (__sem_wait_cleanup): New function. (__new_sem_wait): Use sparc_new_sem structure. Bump and afterwards decrease nwaiters. Register __sem_wait_cleanup as cleanup handler. Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to lll_futex_wait. (__old_sem_wait): New function. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: Include nptl/sysdeps/unix/sysv/linux/sparc version. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c (__new_sem_trywait): Use sparc_old_sem structure. * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c (sem_timedwait): Use sparc_new_sem structure. Bump and afterwards decrease nwaiters. Register __sem_wait_cleanup as cleanup handler. Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to lll_futex_timed_wait. * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c (__new_sem_post): Use sparc_new_sem structure. Only wake if nwaiters > 0. Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to lll_futex_wake. (__old_sem_post): New function. * sysdeps/unix/sysv/linux/sparc/sem_wait.c: New file. * sysdeps/unix/sysv/linux/sparc/sem_init.c: New file. * sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: New file. * sysdeps/unix/sysv/linux/sparc/sem_post.c: New file. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: Remove. * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: Remove. 2007-08-14 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private. * sysdeps/unix/sysv/linux/shpthread_cond_signal.S (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. Use FUTEX_WAKE_OP. * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include kernel-features.h and tcb-offsets.h. (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include tcb-offsets.h. (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use #ifdef __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise. 2007-08-14 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/lowlevellock.c: Comment fix. * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c (__lll_timedwait_tid): Pass LLL_SHARED as 4th argument to lll_futex_timed_wait. * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (__lll_unlock, __lll_robust_unlock): Rewrite as macros instead of inline functions. * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_unlock, __lll_robust_unlock, __lll_wait_tid): Likewise. 2007-08-13 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag): Fix a pasto. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Include kernel-features.h. (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. Switch DW_CFA_advance_loc1 and some DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. Switch DW_CFA_advance_loc{1,2} and some DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use #ifdef __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX. * 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. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S (__pthread_cond_broadcast): Compare %r8 instead of dep_mutex-cond_*(%rdi) with $-1. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S (__pthread_cond_signal): Xor FUTEX_WAKE_OP with FUTEX_WAKE instead of oring. 2007-08-13 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/i786/Implies: New file. 2007-08-13 Jakub Jelinek <jakub@redhat.com> * allocatestack.c: Include kernel-features.h. * pthread_create.c: Likewise. * pthread_mutex_init.c: Likewise. * init.c: Likewise. * pthread_cond_timedwait.c: Likewise. * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise. 2007-08-12 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four byte elements. One of them is the new __shared element. [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared, adjust names of other padding elements. * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four byte elements. One of them is the new __shared element. [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared, adjust names of other padding elements. * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_rwlock_t): Renamed __pad1 element to __shared, adjust names of other padding elements. * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_rwlock_t): Likewise. * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock): Fix a typo. 2007-08-09 Anton Blanchard <anton@samba.org> * sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c: New file. 2007-08-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Include <kernel-features.h>. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. 2007-08-11 Ulrich Drepper <drepper@redhat.com> * pthreadP.h (PTHREAD_ROBUST_MUTEX_PSHARED): Define. * pthread_mutex_lock.c: Use it instead of PTHREAD_MUTEX_PSHARED when dealing with robust mutexes. * pthread_mutex_timedlock.c: Likewise. * pthread_mutex_trylock.c: Likewise. * pthread_mutex_unlock.c: Likewise. * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise. 2007-08-06 Jakub Jelinek <jakub@redhat.com> * pthreadP.h (PTHREAD_MUTEX_PSHARED_BIT): Define. (PTHREAD_MUTEX_TYPE): Mask __kind with 127. (PTHREAD_MUTEX_PSHARED): Define. * pthread_mutex_init.c (__pthread_mutex_init): Set PTHREAD_MUTEX_PSHARED_BIT for pshared or robust mutexes. * pthread_mutex_lock.c (LLL_MUTEX_LOCK): Take mutex as argument instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument to lll_lock. (LLL_MUTEX_TRYLOCK): Take mutex as argument instead of its __data.__lock field. (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument to lll_robust_lock. (__pthread_mutex_lock): Update LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK, LLL_ROBUST_MUTEX_LOCK users, use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly, pass PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock and lll_futex_wait. * pthread_mutex_trylock.c (__pthread_mutex_trylock): Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly, pass PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock. (pthread_mutex_timedlock): Pass PTHREAD_MUTEX_PSHARED (mutex) to lll_timedlock, lll_robust_timedlock, lll_unlock and lll_futex_timed_wait. Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly. * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Pass PTHREAD_MUTEX_PSHARED (mutex) to lll_timedlock, lll_robust_timedlock, lll_unlock and lll_futex_timed_wait. Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly. * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Pass PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock, lll_robust_unlock and lll_futex_wake. * pthread_mutex_setprioceiling.c (pthread_mutex_setprioceiling): Pass PTHREAD_MUTEX_PSHARED (mutex) to lll_futex_wait and lll_futex_wake. Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly. * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK): Take mutex as argument instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument to lll_cond_lock. (LLL_MUTEX_TRYLOCK): Take mutex as argument instead of its __data.__lock field. (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument to lll_robust_cond_lock. * pthread_cond_broadcast.c (__pthread_cond_broadcast): Add pshared variable, pass it to lll_lock, lll_unlock, lll_futex_requeue and lll_futex_wake. Don't use lll_futex_requeue if dependent mutex has PTHREAD_MUTEX_PSHARED_BIT bit set in its __data.__kind. * pthread_cond_destroy.c (__pthread_cond_destroy): Add pshared variable, pass it to lll_lock, lll_unlock, lll_futex_wake and lll_futex_wait. * pthread_cond_signal.c (__pthread_cond_signal): Add pshared variable, pass it to lll_lock, lll_unlock, lll_futex_wake_unlock and lll_futex_wake. * pthread_cond_timedwait.c (__pthread_cond_wait): Add pshared variable, pass it to lll_lock, lll_unlock, lll_futex_timedwait and lll_futex_wake. * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait): Add pshared variable, pass it to lll_lock, lll_unlock, lll_futex_wait and lll_futex_wake. * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_requeue, lll_futex_wake_unlock): Add private argument, use __lll_private_flag macro. * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue, lll_futex_wake_unlock): Likewise. * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_requeue): Likewise. * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_futex_requeue, lll_futex_wake_unlock): Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_requeue): Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue, lll_futex_wake_unlock): Likewise. (lll_futex_wake): Fix a typo. * sysdeps/unix/sysv/linux/pthread-pi-defines.sym (PS_BIT): Add. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__pthread_cond_timedwait): Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: (__condvar_cleanup, __pthread_cond_wait): Likewise. 2007-08-05 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO): Don't use CGOTSETUP and CGOTRESTORE macros. (CGOTSETUP, CGOTRESTORE): Remove. <IS_IN_rtld> (CENABLE, CDISABLE): Don't use JUMPTARGET, branch to @local symbol. 2007-08-01 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove definitions for private futexes. * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Include kernel-features.h and lowlevellock.h. Use private futexes if they are available. (__lll_lock_wait_private, __lll_unlock_wake_private): New. (__lll_mutex_lock_wait): Rename to (__lll_lock_wait): ... this. Don't compile in for libc.so. (__lll_mutex_timedlock_wait): Rename to ... (__lll_timedlock_wait): ... this. Use __NR_gettimeofday. Don't compile in for libc.so. (__lll_mutex_unlock_wake): Rename to ... (__lll_unlock_wake): ... this. Don't compile in for libc.so. (__lll_timedwait_tid): Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Allow including the header from assembler. Renamed all lll_mutex_* resp. lll_robust_mutex_* macros to lll_* resp. lll_robust_*. Renamed all LLL_MUTEX_LOCK_* macros to LLL_LOCK_*. (FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define. (__lll_lock_wait_private): Add prototype. (__lll_lock_wait, __lll_timedlock_wait, __lll_robust_lock_wait, __lll_robust_timedlock_wait, __lll_unlock_wake_private, __lll_unlock_wake): Likewise. (lll_lock): Add private argument. Call __lll_lock_wait_private if private is constant LLL_PRIVATE. (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock, lll_timedlock, lll_robust_timedlock): Add private argument. (lll_unlock): Add private argument. Call __lll_unlock_wake_private if private is constant LLL_PRIVATE. (lll_robust_unlock, lll_robust_dead): Add private argument. (lll_lock_t): Remove. (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake, __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait, lll_cond_wake, lll_cond_broadcast): Remove. * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: Include kernel-features.h and lowlevellock.h. (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove. (LOAD_FUTEX_WAIT): Define. (__lll_robust_mutex_lock_wait): Rename to ... (__lll_robust_lock_wait): ... this. Add private argument. Use LOAD_FUTEX_WAIT macro. (__lll_robust_mutex_timedlock_wait): Rename to ... (__lll_robust_timedlock_wait): ... this. Add private argument. Use __NR_gettimeofday. Use LOAD_FUTEX_WAIT macro. * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove. (pthread_barrier_wait): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Include lowlevellock.h and pthread-errnos.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, FUTEX_CMP_REQUEUE, EINVAL): Remove. (__pthread_cond_broadcast): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Include lowlevellock.h and pthread-errnos.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, EINVAL): Remove. (__pthread_cond_signal): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include lowlevellock.h. (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE): Remove. (__pthread_cond_timedwait): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. Use __NR_gettimeofday. (__condvar_tw_cleanup): Likewise. * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove. (__pthread_cond_wait): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. ( __condvar_w_cleanup): Likewise. * sysdeps/unix/sysv/linux/sh/pthread_once.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (__pthread_rwlock_rdlock): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Include lowlevellock.h. (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (pthread_rwlock_timedrdlock): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Include lowlevellock.h. (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (pthread_rwlock_timedwrlock): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (__pthread_rwlock_unlock): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (__pthread_rwlock_wrlock): Use __lll_{lock,unlock}_* instead of __lll_mutex_{lock,unlock}_*. * sysdeps/unix/sysv/linux/sh/sem_post.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (__new_sem_post): Use standard initial exec code sequences. * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Include lowlevellock.h. (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove. (sem_timedwait): Use __NR_gettimeofday. Use standard initial exec code sequences. * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Include lowlevellock.h. (__new_sem_trywait): Use standard initial exec code sequences. * sysdeps/unix/sysv/linux/sh/sem_wait.S: Include lowlevellock.h. (__new_sem_wait): Use standard initial exec code sequences. 2007-07-31 Anton Blanchard <anton@samba.org> * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post): Use __asm __volatile (__lll_acq_instr ::: "memory") instead of atomic_full_barrier. 2007-07-31 Jakub Jelinek <jakub@redhat.com> * allocatestack.c (stack_cache_lock): Change type to int. (get_cached_stack, allocate_stack, __deallocate_stack, __make_stacks_executable, __find_thread_by_id, __nptl_setxid, __pthread_init_static_tls, __wait_lookup_done): Add LLL_PRIVATE as second argument to lll_lock and lll_unlock macros on stack_cache_lock. * pthread_create.c (__find_in_stack_list): Likewise. (start_thread): Similarly with pd->lock. Use lll_robust_dead macro instead of lll_robust_mutex_dead, pass LLL_SHARED to it as second argument. * descr.h (struct pthread): Change lock and setxid_futex field type to int. * old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0): Use LLL_LOCK_INITIALIZER instead of LLL_MUTEX_LOCK_INITIALIZER. * old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise. * old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0): Likewise. * old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise. * pthread_cond_init.c (__pthread_cond_init): Likewise. * pthreadP.h (__attr_list_lock): Change type to int. * pthread_attr_init.c (__attr_list_lock): Likewise. * pthread_barrier_destroy.c (pthread_barrier_destroy): Pass ibarrier->private ^ FUTEX_PRIVATE_FLAG as second argument to lll_{,un}lock. * pthread_barrier_wait.c (pthread_barrier_wait): Likewise and also for lll_futex_{wake,wait}. * pthread_barrier_init.c (pthread_barrier_init): Make iattr a pointer to const. * pthread_cond_broadcast.c (__pthread_cond_broadcast): Pass LLL_SHARED as second argument to lll_{,un}lock. * pthread_cond_destroy.c (__pthread_cond_destroy): Likewise. * pthread_cond_signal.c (__pthread_cond_singal): Likewise. * pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise. * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait): Likewise. * pthread_getattr_np.c (pthread_getattr_np): Add LLL_PRIVATE as second argument to lll_{,un}lock macros on pd->lock. * pthread_getschedparam.c (__pthread_getschedparam): Likewise. * pthread_setschedparam.c (__pthread_setschedparam): Likewise. * pthread_setschedprio.c (pthread_setschedprio): Likewise. * tpp.c (__pthread_tpp_change_priority, __pthread_current_priority): Likewise. * sysdeps/pthread/createthread.c (do_clone, create_thread): Likewise. * pthread_once.c (once_lock): Change type to int. (__pthread_once): Pass LLL_PRIVATE as second argument to lll_{,un}lock macros on once_lock. * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Use lll_{,un}lock macros instead of lll_mutex_{,un}lock, pass rwlock->__data.__shared as second argument to them and similarly for lll_futex_w*. * pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock): Likewise. * pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock): Likewise. * pthread_rwlock_tryrdlock.c (__pthread_rwlock_tryrdlock): Likewise. * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Likewise. * pthread_rwlock_unlock.c (__pthread_rwlock_unlock): Likewise. * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise. * sem_close.c (sem_close): Pass LLL_PRIVATE as second argument to lll_{,un}lock macros on __sem_mappings_lock. * sem_open.c (check_add_mapping): Likewise. (__sem_mappings_lock): Change type to int. * semaphoreP.h (__sem_mappings_lock): Likewise. * pthread_mutex_lock.c (LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK, LLL_ROBUST_MUTEX_LOCK): Use lll_{,try,robust_}lock macros instead of lll_*mutex_*, pass LLL_SHARED as last argument. (__pthread_mutex_lock): Use lll_unlock instead of lll_mutex_unlock, pass LLL_SHARED as last argument. * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK, LLL_ROBUST_MUTEX_LOCK): Use lll_{cond_,cond_try,robust_cond}lock macros instead of lll_*mutex_*, pass LLL_SHARED as last argument. * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Use lll_{timed,try,robust_timed,un}lock instead of lll_*mutex*, pass LLL_SHARED as last argument. * pthread_mutex_trylock.c (__pthread_mutex_trylock): Similarly. * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Similarly. * sysdeps/pthread/bits/libc-lock.h (__libc_lock_lock, __libc_lock_lock_recursive, __libc_lock_unlock, __libc_lock_unlock_recursive): Pass LLL_PRIVATE as second argument to lll_{,un}lock. * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_lock, _IO_lock_unlock): Likewise. * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Don't use compound literal. * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork): Pass LLL_PRIVATE as second argument to lll_{,un}lock macros on __fork_lock. * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork, free_mem): Likewise. (__fork_lock): Change type to int. * sysdeps/unix/sysv/linux/fork.h (__fork_lock): Likewise. * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Pass isem->private ^ FUTEX_PRIVATE_FLAG as second argument to lll_futex_wake. * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise. * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Likewise. * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait_private): New function. (__lll_lock_wait, __lll_timedlock_wait): Add private argument and pass it through to lll_futex_*wait, only compile in when IS_IN_libpthread. * sysdeps/unix/sysv/linux/lowlevelrobustlock.c (__lll_robust_lock_wait, __lll_robust_timedlock_wait): Add private argument and pass it through to lll_futex_*wait. * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Renamed all lll_mutex_* resp. lll_robust_mutex_* macros to lll_* resp. lll_robust_*. Renamed all __lll_mutex_* resp. __lll_robust_mutex_* inline functions to __lll_* resp. __lll_robust_*. (LLL_MUTEX_LOCK_INITIALIZER): Remove. (lll_mutex_dead): Add private argument. (__lll_lock_wait_private): New prototype. (__lll_lock_wait, __lll_robust_lock_wait, __lll_lock_timedwait, __lll_robust_lock_timedwait): Add private argument to prototypes. (__lll_lock): Add private argument, if it is constant LLL_PRIVATE, call __lll_lock_wait_private, otherwise pass private to __lll_lock_wait. (__lll_robust_lock, __lll_cond_lock, __lll_timedlock, __lll_robust_timedlock): Add private argument, pass it to __lll_*wait functions. (__lll_unlock): Add private argument, if it is constant LLL_PRIVATE, call __lll_unlock_wake_private, otherwise pass private to __lll_unlock_wake. (__lll_robust_unlock): Add private argument, pass it to __lll_robust_unlock_wake. (lll_lock, lll_robust_lock, lll_cond_lock, lll_timedlock, lll_robust_timedlock, lll_unlock, lll_robust_unlock): Add private argument, pass it through to __lll_* inline function. (__lll_mutex_unlock_force, lll_mutex_unlock_force): Remove. (lll_lock_t): Remove. (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake, __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait, lll_cond_wake, lll_cond_broadcast): Remove. * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Allow including the header from assembler. Renamed all lll_mutex_* resp. lll_robust_mutex_* macros to lll_* resp. lll_robust_*. (LOCK, FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define. (LLL_MUTEX_LOCK_INITIALIZER, LLL_MUTEX_LOCK_INITIALIZER_LOCKED, LLL_MUTEX_LOCK_INITIALIZER_WAITERS): Remove. (__lll_mutex_lock_wait, __lll_mutex_timedlock_wait, __lll_mutex_unlock_wake, __lll_lock_wait, __lll_unlock_wake): Remove prototype. (__lll_trylock_asm, __lll_lock_asm_start, __lll_unlock_asm): Define. (lll_robust_trylock, lll_cond_trylock): Use LLL_LOCK_INITIALIZER* rather than LLL_MUTEX_LOCK_INITIALIZER* macros. (lll_trylock): Likewise, use __lll_trylock_asm, pass MULTIPLE_THREADS_OFFSET as another asm operand. (lll_lock): Add private argument, use __lll_lock_asm_start, pass MULTIPLE_THREADS_OFFSET as last asm operand, call __lll_lock_wait_private if private is constant LLL_PRIVATE, otherwise pass private as another argument to __lll_lock_wait. (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock, lll_timedlock, lll_robust_timedlock): Add private argument, pass private as another argument to __lll_*lock_wait call. (lll_unlock): Add private argument, use __lll_unlock_asm, pass MULTIPLE_THREADS_OFFSET as another asm operand, call __lll_unlock_wake_private if private is constant LLL_PRIVATE, otherwise pass private as another argument to __lll_unlock_wake. (lll_robust_unlock): Add private argument, pass private as another argument to __lll_unlock_wake. (lll_robust_dead): Add private argument, use __lll_private_flag macro. (lll_islocked): Use LLL_LOCK_INITIALIZER instead of LLL_MUTEX_LOCK_INITIALIZER. (lll_lock_t): Remove. (LLL_LOCK_INITIALIZER_WAITERS): Define. (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake, __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait, lll_cond_wake, lll_cond_broadcast): Remove. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Revert 2007-05-2{3,9} changes. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Include kernel-features.h and lowlevellock.h. (LOAD_PRIVATE_FUTEX_WAIT): Define. (LOAD_FUTEX_WAIT): Rewritten. (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define. (__lll_lock_wait_private, __lll_unlock_wake_private): New functions. (__lll_mutex_lock_wait): Rename to ... (__lll_lock_wait): ... this. Take futex addr from %edx instead of %ecx, %ecx is now private argument. Don't compile in for libc.so. (__lll_mutex_timedlock_wait): Rename to ... (__lll_timedlock_wait): ... this. Use __NR_gettimeofday. %esi contains private argument. Don't compile in for libc.so. (__lll_mutex_unlock_wake): Rename to ... (__lll_unlock_wake): ... this. %ecx contains private argument. Don't compile in for libc.so. (__lll_timedwait_tid): Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Include kernel-features.h and lowlevellock.h. (LOAD_FUTEX_WAIT): Define. (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define. (__lll_robust_mutex_lock_wait): Rename to ... (__lll_robust_lock_wait): ... this. Futex addr is now in %edx argument, %ecx argument contains private. Use LOAD_FUTEX_WAIT macro. (__lll_robust_mutex_timedlock_wait): Rename to ... (__lll_robust_timedlock_wait): ... this. Use __NR_gettimeofday. %esi argument contains private, use LOAD_FUTEX_WAIT macro. * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (pthread_barrier_wait): Rename __lll_mutex_* to __lll_*, pass PRIVATE(%ebx) ^ LLL_SHARED as private argument in %ecx to __lll_lock_wait and __lll_unlock_wake, pass MUTEX(%ebx) address to __lll_lock_wait in %edx. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Include lowlevellock.h and pthread-errnos.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, FUTEX_CMP_REQUEUE, EINVAL, LOCK): Don't define. (__pthread_cond_broadcast): Rename __lll_mutex_* to __lll_*, pass cond_lock address in %edx rather than %ecx to __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Include lowlevellock.h and pthread-errnos.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE, EINVAL, LOCK): Don't define. (__pthread_cond_signal): Rename __lll_mutex_* to __lll_*, pass cond_lock address in %edx rather than %ecx to __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Include lowlevellock.h. (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*, pass cond_lock address in %edx rather than %ecx to __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait and __lll_unlock_wake. Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_cond_wait, __condvar_w_cleanup): Rename __lll_mutex_* to __lll_*, pass cond_lock address in %edx rather than %ecx to __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*, pass MUTEX(%ebx) address in %edx rather than %ecx to __lll_lock_wait, pass PSHARED(%ebx) in %ecx to both __lll_lock_wait and __lll_unlock_wake. Move return value from %ecx to %edx register. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Include lowlevellock.h. (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass MUTEX(%ebp) address in %edx rather than %ecx to __lll_lock_wait, pass PSHARED(%ebp) in %ecx to both __lll_lock_wait and __lll_unloc