mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 12:13:37 +08:00
e51deae7f6
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_unlock_wake. Move return value from %ecx to %edx register. Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.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_unlock_wake. Move return value from %ecx to %edx register. Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_rwlock_unlock): Rename __lll_mutex_* to __lll_*, pass MUTEX(%edi) address in %edx rather than %ecx to __lll_lock_wait, pass PSHARED(%edi) in %ecx to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_rwlock_wrlock): 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/pthread_once.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Don't define. * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAKE): Don't define. * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Include lowlevellock.h. (LOCK, SYS_futex, SYS_gettimeofday, FUTEX_WAIT): Don't define. (sem_timedwait): Use __NR_gettimeofday. * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Include lowlevellock.h. (LOCK): Don't define. * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAIT): Don't define. * sysdeps/unix/sysv/linux/powerpc/sem_post.c: Wake only when there are waiters. * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Revert 2007-05-2{3,9} changes. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Include kernel-features.h and lowlevellock.h. (LOAD_PRIVATE_FUTEX_WAIT): Define. (LOAD_FUTEX_WAIT): Rewritten. (LOCK, 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. %esi is now private argument. Don't compile in for libc.so. (__lll_mutex_timedlock_wait): Rename to ... (__lll_timedlock_wait): ... this. %esi contains private argument. Don't compile in for libc.so. (__lll_mutex_unlock_wake): Rename to ... (__lll_unlock_wake): ... this. %esi contains private argument. Don't compile in for libc.so. * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Include kernel-features.h and lowlevellock.h. (LOAD_FUTEX_WAIT): Define. (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define. (__lll_robust_mutex_lock_wait): Rename to ... (__lll_robust_lock_wait): ... this. %esi argument contains private. Use LOAD_FUTEX_WAIT macro. (__lll_robust_mutex_timedlock_wait): Rename to ... (__lll_robust_timedlock_wait): ... this. %esi argument contains private, use LOAD_FUTEX_WAIT macro. * sysdeps/unix/sysv/linux/x86_64/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(%rdi) ^ LLL_SHARED as private argument in %esi to __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/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 LLL_SHARED in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/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 LLL_SHARED in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*, pass LLL_SHARED in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define. (__pthread_cond_wait, __condvar_cleanup): Rename __lll_mutex_* to __lll_*, pass LLL_SHARED in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK): Don't define. (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*, pass PSHARED(%rdi) in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK): Don't define. (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass PSHARED(%rdi) in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK): Don't define. (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass PSHARED(%rdi) in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK): Don't define. (__pthread_rwlock_unlock): Rename __lll_mutex_* to __lll_*, pass PSHARED(%rdi) in %esi to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Include lowlevellock.h. (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK): Don't define. (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass PSHARED(%rdi) in %ecx to both __lll_lock_wait and __lll_unlock_wake. * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Don't define. * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAKE): Don't define. * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAIT): Don't define. * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Include lowlevellock.h. (LOCK): Don't define. * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Include lowlevellock.h. (LOCK, SYS_futex, FUTEX_WAIT): Don't define. * sysdeps/unix/sysv/linux/sparc/internaltypes.h: New file. * sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c: New file. * sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c: New file. * sysdeps/unix/sysv/linux/sparc/pthread_barrier_wait.c: New file. * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c (__lll_lock_wait_private): New function. (__lll_lock_wait, __lll_timedlock_wait): Add private argument, pass it to lll_futex_*wait. Don't compile in for libc.so. * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c: Remove. * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c (struct sparc_pthread_barrier): Remove. (pthread_barrier_wait): Use union sparc_pthread_barrier instead of struct sparc_pthread_barrier. Pass ibarrier->s.pshared ? LLL_SHARED : LLL_PRIVATE to lll_{,un}lock and lll_futex_wait macros. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c: Remove. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c: Include sparc pthread_barrier_wait.c instead of generic one. |
||
---|---|---|
.. | ||
sysdeps | ||
alloca_cutoff.c | ||
allocatestack.c | ||
ANNOUNCE | ||
Banner | ||
cancellation.c | ||
ChangeLog | ||
cleanup_compat.c | ||
cleanup_defer_compat.c | ||
cleanup_defer.c | ||
cleanup_routine.c | ||
cleanup.c | ||
cond-perf.c | ||
configure | ||
descr.h | ||
DESIGN-barrier.txt | ||
DESIGN-condvar.txt | ||
DESIGN-rwlock.txt | ||
DESIGN-sem.txt | ||
eintr.c | ||
errno-loc.c | ||
events.c | ||
forward.c | ||
herrno.c | ||
init.c | ||
libc-cancellation.c | ||
lowlevellock.h | ||
Makeconfig | ||
Makefile | ||
old_pthread_atfork.c | ||
old_pthread_cond_broadcast.c | ||
old_pthread_cond_destroy.c | ||
old_pthread_cond_init.c | ||
old_pthread_cond_signal.c | ||
old_pthread_cond_timedwait.c | ||
old_pthread_cond_wait.c | ||
perf.c | ||
pt-allocrtsig.c | ||
pt-cleanup.c | ||
pt-raise.c | ||
pt-system.c | ||
pthread_atfork.c | ||
pthread_attr_destroy.c | ||
pthread_attr_getdetachstate.c | ||
pthread_attr_getguardsize.c | ||
pthread_attr_getinheritsched.c | ||
pthread_attr_getschedparam.c | ||
pthread_attr_getschedpolicy.c | ||
pthread_attr_getscope.c | ||
pthread_attr_getstack.c | ||
pthread_attr_getstackaddr.c | ||
pthread_attr_getstacksize.c | ||
pthread_attr_init.c | ||
pthread_attr_setdetachstate.c | ||
pthread_attr_setguardsize.c | ||
pthread_attr_setinheritsched.c | ||
pthread_attr_setschedparam.c | ||
pthread_attr_setschedpolicy.c | ||
pthread_attr_setscope.c | ||
pthread_attr_setstack.c | ||
pthread_attr_setstackaddr.c | ||
pthread_attr_setstacksize.c | ||
pthread_barrier_destroy.c | ||
pthread_barrier_init.c | ||
pthread_barrier_wait.c | ||
pthread_barrierattr_destroy.c | ||
pthread_barrierattr_getpshared.c | ||
pthread_barrierattr_init.c | ||
pthread_barrierattr_setpshared.c | ||
pthread_cancel.c | ||
pthread_clock_gettime.c | ||
pthread_clock_settime.c | ||
pthread_cond_broadcast.c | ||
pthread_cond_destroy.c | ||
pthread_cond_init.c | ||
pthread_cond_signal.c | ||
pthread_cond_timedwait.c | ||
pthread_cond_wait.c | ||
pthread_condattr_destroy.c | ||
pthread_condattr_getclock.c | ||
pthread_condattr_getpshared.c | ||
pthread_condattr_init.c | ||
pthread_condattr_setclock.c | ||
pthread_condattr_setpshared.c | ||
pthread_create.c | ||
pthread_detach.c | ||
pthread_equal.c | ||
pthread_exit.c | ||
pthread_getattr_np.c | ||
pthread_getconcurrency.c | ||
pthread_getcpuclockid.c | ||
pthread_getschedparam.c | ||
pthread_getspecific.c | ||
pthread_join.c | ||
pthread_key_create.c | ||
pthread_key_delete.c | ||
pthread_kill_other_threads.c | ||
pthread_mutex_consistent.c | ||
pthread_mutex_destroy.c | ||
pthread_mutex_getprioceiling.c | ||
pthread_mutex_init.c | ||
pthread_mutex_lock.c | ||
pthread_mutex_setprioceiling.c | ||
pthread_mutex_timedlock.c | ||
pthread_mutex_trylock.c | ||
pthread_mutex_unlock.c | ||
pthread_mutexattr_destroy.c | ||
pthread_mutexattr_getprioceiling.c | ||
pthread_mutexattr_getprotocol.c | ||
pthread_mutexattr_getpshared.c | ||
pthread_mutexattr_getrobust.c | ||
pthread_mutexattr_gettype.c | ||
pthread_mutexattr_init.c | ||
pthread_mutexattr_setprioceiling.c | ||
pthread_mutexattr_setprotocol.c | ||
pthread_mutexattr_setpshared.c | ||
pthread_mutexattr_setrobust.c | ||
pthread_mutexattr_settype.c | ||
pthread_once.c | ||
pthread_rwlock_destroy.c | ||
pthread_rwlock_init.c | ||
pthread_rwlock_rdlock.c | ||
pthread_rwlock_timedrdlock.c | ||
pthread_rwlock_timedwrlock.c | ||
pthread_rwlock_tryrdlock.c | ||
pthread_rwlock_trywrlock.c | ||
pthread_rwlock_unlock.c | ||
pthread_rwlock_wrlock.c | ||
pthread_rwlockattr_destroy.c | ||
pthread_rwlockattr_getkind_np.c | ||
pthread_rwlockattr_getpshared.c | ||
pthread_rwlockattr_init.c | ||
pthread_rwlockattr_setkind_np.c | ||
pthread_rwlockattr_setpshared.c | ||
pthread_self.c | ||
pthread_setcancelstate.c | ||
pthread_setcanceltype.c | ||
pthread_setconcurrency.c | ||
pthread_setegid.c | ||
pthread_seteuid.c | ||
pthread_setgid.c | ||
pthread_setregid.c | ||
pthread_setresgid.c | ||
pthread_setresuid.c | ||
pthread_setreuid.c | ||
pthread_setschedparam.c | ||
pthread_setschedprio.c | ||
pthread_setspecific.c | ||
pthread_setuid.c | ||
pthread_spin_destroy.c | ||
pthread_spin_init.c | ||
pthread_spin_unlock.c | ||
pthread_testcancel.c | ||
pthread_timedjoin.c | ||
pthread_tryjoin.c | ||
pthread-errnos.sym | ||
pthreadP.h | ||
res.c | ||
sem_close.c | ||
sem_destroy.c | ||
sem_getvalue.c | ||
sem_init.c | ||
sem_open.c | ||
sem_unlink.c | ||
semaphore.h | ||
semaphoreP.h | ||
shlib-versions | ||
sigaction.c | ||
sockperf.c | ||
TODO | ||
TODO-kernel | ||
TODO-testing | ||
tpp.c | ||
tst-_res1.c | ||
tst-_res1mod1.c | ||
tst-_res1mod2.c | ||
tst-align2.c | ||
tst-align3.c | ||
tst-align.c | ||
tst-atfork1.c | ||
tst-atfork2.c | ||
tst-atfork2mod.c | ||
tst-attr1.c | ||
tst-attr2.c | ||
tst-attr3.c | ||
tst-backtrace1.c | ||
tst-barrier1.c | ||
tst-barrier2.c | ||
tst-barrier3.c | ||
tst-barrier4.c | ||
tst-basic1.c | ||
tst-basic2.c | ||
tst-basic3.c | ||
tst-basic4.c | ||
tst-basic5.c | ||
tst-basic6.c | ||
tst-cancel1.c | ||
tst-cancel2.c | ||
tst-cancel3.c | ||
tst-cancel4.c | ||
tst-cancel5.c | ||
tst-cancel6.c | ||
tst-cancel7.c | ||
tst-cancel8.c | ||
tst-cancel9.c | ||
tst-cancel10.c | ||
tst-cancel11.c | ||
tst-cancel12.c | ||
tst-cancel13.c | ||
tst-cancel14.c | ||
tst-cancel15.c | ||
tst-cancel16.c | ||
tst-cancel17.c | ||
tst-cancel18.c | ||
tst-cancel19.c | ||
tst-cancel20.c | ||
tst-cancel21.c | ||
tst-cancel22.c | ||
tst-cancel23.c | ||
tst-cancel24.cc | ||
tst-cancel25.c | ||
tst-cancel-wrappers.sh | ||
tst-cancelx1.c | ||
tst-cancelx2.c | ||
tst-cancelx3.c | ||
tst-cancelx4.c | ||
tst-cancelx5.c | ||
tst-cancelx6.c | ||
tst-cancelx7.c | ||
tst-cancelx8.c | ||
tst-cancelx9.c | ||
tst-cancelx10.c | ||
tst-cancelx11.c | ||
tst-cancelx12.c | ||
tst-cancelx13.c | ||
tst-cancelx14.c | ||
tst-cancelx15.c | ||
tst-cancelx16.c | ||
tst-cancelx17.c | ||
tst-cancelx18.c | ||
tst-cancelx20.c | ||
tst-cancelx21.c | ||
tst-cleanup0.c | ||
tst-cleanup0.expect | ||
tst-cleanup1.c | ||
tst-cleanup2.c | ||
tst-cleanup3.c | ||
tst-cleanup4.c | ||
tst-cleanup4aux.c | ||
tst-cleanupx0.c | ||
tst-cleanupx0.expect | ||
tst-cleanupx1.c | ||
tst-cleanupx2.c | ||
tst-cleanupx3.c | ||
tst-cleanupx4.c | ||
tst-clock1.c | ||
tst-clock2.c | ||
tst-cond1.c | ||
tst-cond2.c | ||
tst-cond3.c | ||
tst-cond4.c | ||
tst-cond5.c | ||
tst-cond6.c | ||
tst-cond7.c | ||
tst-cond8.c | ||
tst-cond9.c | ||
tst-cond10.c | ||
tst-cond11.c | ||
tst-cond12.c | ||
tst-cond13.c | ||
tst-cond14.c | ||
tst-cond15.c | ||
tst-cond16.c | ||
tst-cond17.c | ||
tst-cond18.c | ||
tst-cond19.c | ||
tst-cond20.c | ||
tst-cond21.c | ||
tst-cond22.c | ||
tst-context1.c | ||
tst-detach1.c | ||
tst-dlsym1.c | ||
tst-eintr1.c | ||
tst-eintr2.c | ||
tst-eintr3.c | ||
tst-eintr4.c | ||
tst-eintr5.c | ||
tst-exec1.c | ||
tst-exec2.c | ||
tst-exec3.c | ||
tst-exec4.c | ||
tst-execstack-mod.c | ||
tst-execstack.c | ||
tst-exit1.c | ||
tst-exit2.c | ||
tst-exit3.c | ||
tst-fini1.c | ||
tst-fini1mod.c | ||
tst-flock1.c | ||
tst-flock2.c | ||
tst-fork1.c | ||
tst-fork2.c | ||
tst-fork3.c | ||
tst-fork4.c | ||
tst-getpid1.c | ||
tst-getpid2.c | ||
tst-getpid3.c | ||
tst-initializers1-c89.c | ||
tst-initializers1-c99.c | ||
tst-initializers1-gnu89.c | ||
tst-initializers1-gnu99.c | ||
tst-initializers1.c | ||
tst-join1.c | ||
tst-join2.c | ||
tst-join3.c | ||
tst-join4.c | ||
tst-join5.c | ||
tst-join6.c | ||
tst-key1.c | ||
tst-key2.c | ||
tst-key3.c | ||
tst-key4.c | ||
tst-kill1.c | ||
tst-kill2.c | ||
tst-kill3.c | ||
tst-kill4.c | ||
tst-kill5.c | ||
tst-kill6.c | ||
tst-locale1.c | ||
tst-locale2.c | ||
tst-mutex1.c | ||
tst-mutex2.c | ||
tst-mutex3.c | ||
tst-mutex4.c | ||
tst-mutex5.c | ||
tst-mutex5a.c | ||
tst-mutex6.c | ||
tst-mutex7.c | ||
tst-mutex7a.c | ||
tst-mutex8.c | ||
tst-mutex9.c | ||
tst-mutexpi1.c | ||
tst-mutexpi2.c | ||
tst-mutexpi3.c | ||
tst-mutexpi4.c | ||
tst-mutexpi5.c | ||
tst-mutexpi5a.c | ||
tst-mutexpi6.c | ||
tst-mutexpi7.c | ||
tst-mutexpi7a.c | ||
tst-mutexpi8.c | ||
tst-mutexpi9.c | ||
tst-mutexpp1.c | ||
tst-mutexpp6.c | ||
tst-mutexpp10.c | ||
tst-oddstacklimit.c | ||
tst-once1.c | ||
tst-once2.c | ||
tst-once3.c | ||
tst-once4.c | ||
tst-oncex3.c | ||
tst-oncex4.c | ||
tst-popen1.c | ||
tst-raise1.c | ||
tst-robust1.c | ||
tst-robust2.c | ||
tst-robust3.c | ||
tst-robust4.c | ||
tst-robust5.c | ||
tst-robust6.c | ||
tst-robust7.c | ||
tst-robust8.c | ||
tst-robust9.c | ||
tst-robustpi1.c | ||
tst-robustpi2.c | ||
tst-robustpi3.c | ||
tst-robustpi4.c | ||
tst-robustpi5.c | ||
tst-robustpi6.c | ||
tst-robustpi7.c | ||
tst-robustpi8.c | ||
tst-robustpi9.c | ||
tst-rwlock1.c | ||
tst-rwlock2.c | ||
tst-rwlock3.c | ||
tst-rwlock4.c | ||
tst-rwlock5.c | ||
tst-rwlock6.c | ||
tst-rwlock7.c | ||
tst-rwlock8.c | ||
tst-rwlock9.c | ||
tst-rwlock10.c | ||
tst-rwlock11.c | ||
tst-rwlock12.c | ||
tst-rwlock13.c | ||
tst-rwlock14.c | ||
tst-sched1.c | ||
tst-sem1.c | ||
tst-sem2.c | ||
tst-sem3.c | ||
tst-sem4.c | ||
tst-sem5.c | ||
tst-sem6.c | ||
tst-sem7.c | ||
tst-sem8.c | ||
tst-sem9.c | ||
tst-sem10.c | ||
tst-sem11.c | ||
tst-sem12.c | ||
tst-setuid1-static.c | ||
tst-setuid1.c | ||
tst-signal1.c | ||
tst-signal2.c | ||
tst-signal3.c | ||
tst-signal4.c | ||
tst-signal5.c | ||
tst-signal6.c | ||
tst-signal7.c | ||
tst-spin1.c | ||
tst-spin2.c | ||
tst-spin3.c | ||
tst-stack1.c | ||
tst-stack2.c | ||
tst-stack3.c | ||
tst-stackguard1-static.c | ||
tst-stackguard1.c | ||
tst-stdio1.c | ||
tst-stdio2.c | ||
tst-sysconf.c | ||
tst-tls1.c | ||
tst-tls2.c | ||
tst-tls3.c | ||
tst-tls3mod.c | ||
tst-tls4.c | ||
tst-tls4moda.c | ||
tst-tls4modb.c | ||
tst-tls5.c | ||
tst-tls5.h | ||
tst-tls5mod.c | ||
tst-tls5moda.c | ||
tst-tls5modb.c | ||
tst-tls5modc.c | ||
tst-tls5modd.c | ||
tst-tls5mode.c | ||
tst-tls5modf.c | ||
tst-tls6.sh | ||
tst-tpp.h | ||
tst-tsd1.c | ||
tst-tsd2.c | ||
tst-tsd3.c | ||
tst-tsd4.c | ||
tst-tsd5.c | ||
tst-typesizes.c | ||
tst-umask1.c | ||
tst-unload.c | ||
tst-vfork1.c | ||
tst-vfork1x.c | ||
tst-vfork2.c | ||
tst-vfork2x.c | ||
unwind.c | ||
vars.c | ||
version.c | ||
Versions |