musl/src/thread
Rich Felker 124b4ebc8a cheap special-case optimization for normal mutexes
cycle-level benchmark on atom cpu showed typical pthread_mutex_lock
call dropping from ~120 cycles to ~90 cycles with this change. benefit
may vary with compiler options and version, but this optimization is
very cheap to make and should always help some.
2011-03-30 08:58:25 -04:00
..
i386 match glibc/lsb cancellation abi on i386 2011-03-25 22:13:57 -04:00
x86_64 race condition fix: block all signals before decrementing thread count 2011-02-19 11:04:36 -05:00
__futex.c global cleanup to use the new syscall interface 2011-03-20 00:16:43 -04:00
__lock.c syscall overhaul part two - unify public and internal syscall interface 2011-03-19 21:36:10 -04:00
__set_thread_area.c finish unifying thread register handling in preparation for porting 2011-02-15 03:56:52 -05:00
__timedwait.c if returning errno value directly from a syscall, we need to negate it. 2011-03-19 23:18:34 -04:00
__unmapself.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
__wait.c syscall overhaul part two - unify public and internal syscall interface 2011-03-19 21:36:10 -04:00
__wake.c syscall overhaul part two - unify public and internal syscall interface 2011-03-19 21:36:10 -04:00
cancellation.c match glibc/lsb cancellation abi on i386 2011-03-25 22:13:57 -04:00
cancellation2.c match glibc/lsb cancellation abi on i386 2011-03-25 22:13:57 -04:00
cancellation3.c match glibc/lsb cancellation abi on i386 2011-03-25 22:13:57 -04:00
clone.c finish unifying thread register handling in preparation for porting 2011-02-15 03:56:52 -05:00
pthread_atfork.c add pthread_atfork interface 2011-02-18 19:52:42 -05:00
pthread_attr_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_attr_getdetachstate.c fix pthread_attr_* implementations to match corrected prototypes 2011-03-11 09:51:14 -05:00
pthread_attr_getguardsize.c fix pthread_attr_* implementations to match corrected prototypes 2011-03-11 09:51:14 -05:00
pthread_attr_getschedparam.c implement dummy pthread_attr_[gs]etschedparam functions 2011-03-11 09:51:54 -05:00
pthread_attr_getscope.c fix pthread_attr_* implementations to match corrected prototypes 2011-03-11 09:51:14 -05:00
pthread_attr_getstacksize.c fix pthread_attr_* implementations to match corrected prototypes 2011-03-11 09:51:14 -05:00
pthread_attr_init.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_attr_setdetachstate.c reject invalid attribute settings 2011-03-07 15:46:37 -05:00
pthread_attr_setguardsize.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_attr_setschedparam.c implement dummy pthread_attr_[gs]etschedparam functions 2011-03-11 09:51:54 -05:00
pthread_attr_setscope.c reject invalid attribute settings 2011-03-07 15:46:37 -05:00
pthread_attr_setstacksize.c enforce stack size min in pthread_attr_setstacksize 2011-03-04 00:59:14 -05:00
pthread_barrier_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_barrier_init.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_barrier_wait.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_barrierattr_destroy.c implement barrier attribute functions (essentially no-ops) 2011-03-07 15:42:52 -05:00
pthread_barrierattr_getpshared.c implement barrier attribute functions (essentially no-ops) 2011-03-07 15:42:52 -05:00
pthread_barrierattr_init.c implement barrier attribute functions (essentially no-ops) 2011-03-07 15:42:52 -05:00
pthread_barrierattr_setpshared.c implement barrier attribute functions (essentially no-ops) 2011-03-07 15:42:52 -05:00
pthread_cancel.c major improvements to cancellation handling 2011-03-29 12:58:22 -04:00
pthread_cond_broadcast.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_cond_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_cond_init.c use the selected clock from the condattr for pthread_cond_timedwait 2011-03-07 17:39:13 -05:00
pthread_cond_signal.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_cond_timedwait.c overhaul cancellation to fix resource leaks and dangerous behavior with signals 2011-03-24 14:18:00 -04:00
pthread_cond_wait.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_condattr_destroy.c implement pthread_condattr_* interfaces 2011-03-07 16:20:12 -05:00
pthread_condattr_getclock.c implement pthread_condattr_* interfaces 2011-03-07 16:20:12 -05:00
pthread_condattr_getpshared.c implement pthread_condattr_* interfaces 2011-03-07 16:20:12 -05:00
pthread_condattr_init.c implement pthread_condattr_* interfaces 2011-03-07 16:20:12 -05:00
pthread_condattr_setclock.c disallow cpu time clocks as condattr clock values 2011-03-08 02:32:42 -05:00
pthread_condattr_setpshared.c implement pthread_condattr_* interfaces 2011-03-07 16:20:12 -05:00
pthread_create.c major improvements to cancellation handling 2011-03-29 12:58:22 -04:00
pthread_detach.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_equal.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_getspecific.c optimize POSIX TSD for fast pthread_getspecific 2011-03-03 18:30:44 -05:00
pthread_join.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_key_create.c optimize POSIX TSD for fast pthread_getspecific 2011-03-03 18:30:44 -05:00
pthread_key_delete.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_kill.c if returning errno value directly from a syscall, we need to negate it. 2011-03-19 23:18:34 -04:00
pthread_mutex_consistent.c implement robust mutexes 2011-03-17 20:41:37 -04:00
pthread_mutex_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_mutex_init.c implement robust mutexes 2011-03-17 20:41:37 -04:00
pthread_mutex_lock.c cheap special-case optimization for normal mutexes 2011-03-30 08:58:25 -04:00
pthread_mutex_timedlock.c implement robust mutexes 2011-03-17 20:41:37 -04:00
pthread_mutex_trylock.c revert mutex "optimization" that turned out to be worse 2011-03-29 15:11:25 -04:00
pthread_mutex_unlock.c implement robust mutexes 2011-03-17 20:41:37 -04:00
pthread_mutexattr_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_mutexattr_getpshared.c implement pthread_mutexattr_[gs]etpshared functions 2011-03-08 02:33:37 -05:00
pthread_mutexattr_getrobust.c implement robust mutexes 2011-03-17 20:41:37 -04:00
pthread_mutexattr_gettype.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_mutexattr_init.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_mutexattr_setpshared.c implement pthread_mutexattr_[gs]etpshared functions 2011-03-08 02:33:37 -05:00
pthread_mutexattr_setrobust.c implement robust mutexes 2011-03-17 20:41:37 -04:00
pthread_mutexattr_settype.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_once.c fix major breakage in pthread_once (it was always deadlocking) 2011-03-08 12:08:40 -05:00
pthread_rwlock_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_rwlock_init.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_rwlock_rdlock.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_rwlock_timedrdlock.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_rwlock_timedwrlock.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_rwlock_tryrdlock.c rwlock trylock functions were wrongly returning EAGAIN instead of EBUSY 2011-03-08 12:19:30 -05:00
pthread_rwlock_trywrlock.c rwlock trylock functions were wrongly returning EAGAIN instead of EBUSY 2011-03-08 12:19:30 -05:00
pthread_rwlock_unlock.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_rwlock_wrlock.c reorganize pthread data structures and move the definitions to alltypes.h 2011-02-17 17:16:20 -05:00
pthread_rwlockattr_destroy.c implement pthread_rwlockattr_* (essentially no-ops) 2011-03-07 16:43:25 -05:00
pthread_rwlockattr_getpshared.c implement pthread_rwlockattr_* (essentially no-ops) 2011-03-07 16:43:25 -05:00
pthread_rwlockattr_init.c implement pthread_rwlockattr_* (essentially no-ops) 2011-03-07 16:43:25 -05:00
pthread_rwlockattr_setpshared.c implement pthread_rwlockattr_* (essentially no-ops) 2011-03-07 16:43:25 -05:00
pthread_self.c global cleanup to use the new syscall interface 2011-03-20 00:16:43 -04:00
pthread_setcancelstate.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_setcanceltype.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_setspecific.c optimize POSIX TSD for fast pthread_getspecific 2011-03-03 18:30:44 -05:00
pthread_sigmask.c fix error handling for pthread_sigmask 2011-03-09 20:31:06 -05:00
pthread_spin_destroy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_spin_init.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
pthread_spin_lock.c revert some more spin optimizations that turned out to be pessimizations 2011-03-28 22:36:55 -04:00
pthread_spin_trylock.c revert some more spin optimizations that turned out to be pessimizations 2011-03-28 22:36:55 -04:00
pthread_spin_unlock.c prepare pthread_spin_unlock for archs that need memory barriers 2011-03-24 23:06:48 -04:00
pthread_testcancel.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
sem_destroy.c implement POSIX semaphores 2011-03-04 00:45:59 -05:00
sem_getvalue.c implement POSIX semaphores 2011-03-04 00:45:59 -05:00
sem_init.c implement POSIX semaphores 2011-03-04 00:45:59 -05:00
sem_open.c fix failure behavior of sem_open when sem does not exist 2011-03-10 22:05:16 -05:00
sem_post.c implement POSIX semaphores 2011-03-04 00:45:59 -05:00
sem_timedwait.c overhaul cancellation to fix resource leaks and dangerous behavior with signals 2011-03-24 14:18:00 -04:00
sem_trywait.c fix some semaphore wait semantics (race condition deadlock and error checking) 2011-03-10 21:52:18 -05:00
sem_unlink.c implement POSIX semaphores 2011-03-04 00:45:59 -05:00
sem_wait.c implement POSIX semaphores 2011-03-04 00:45:59 -05:00