musl/src/thread
Rich Felker dac084a4c5 work around "signal loses thread pointer" issue with "approach 2"
this was discussed on the mailing list and no consensus on the
preferred solution was reached, so in anticipation of a release, i'm
just committing a minimally-invasive solution that avoids the problem
by ensuring that multi-threaded-capable programs will always have
initialized the thread pointer before any signal handler can run.

in the long term we may switch to initializing the thread pointer at
program start time whenever the program has the potential to access
any per-thread data.
2012-02-27 18:51:02 -05:00
..
arm fix typo in arm clone() asm 2011-10-09 00:02:39 -04:00
i386 replace bad cancellation cleanup abi with a sane one 2012-02-09 02:33:08 -05:00
x86_64 overhaul clone syscall wrapping 2011-09-18 10:14:37 -04:00
__futex.c global cleanup to use the new syscall interface 2011-03-20 00:16:43 -04:00
__lock.c use a_swap rather than old name a_xchg 2011-09-16 14:29:24 -04:00
__set_thread_area.c overhaul clone syscall wrapping 2011-09-18 10:14:37 -04:00
__timedwait.c simplify unified timed wait code, drop support for newer method 2011-08-07 11:14:32 -04:00
__unmapself.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
__wait.c reduce some ridiculously large spin counts 2011-05-06 21:45:48 -04:00
__wake.c consistency: change all remaining syscalls to use SYS_ rather than __NR_ prefix 2011-04-06 20:32:53 -04:00
cancel_dummy.c use weak aliases rather than function pointers to simplify some code 2011-08-06 20:09:51 -04:00
cancel_impl.c fix cancellation failure in single-threaded programs 2012-01-22 17:19:37 -05:00
cancellation.c small fix for new pthread cleanup stuff 2012-02-09 21:24:56 -05:00
clone.c overhaul clone syscall wrapping 2011-09-18 10:14:37 -04:00
forkall.c overhaul clone syscall wrapping 2011-09-18 10:14:37 -04:00
pthread_atfork.c use weak aliases rather than function pointers to simplify some code 2011-08-06 20:09:51 -04: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 next step making barrier self-sync'd destruction safe 2011-09-28 18:00:02 -04:00
pthread_barrier_init.c process-shared barrier support, based on discussion with bdonlan 2011-09-27 13:50:29 -04:00
pthread_barrier_wait.c fix excessive/insufficient wakes in __vm_unlock 2011-09-28 19:45:37 -04:00
pthread_barrierattr_destroy.c implement barrier attribute functions (essentially no-ops) 2011-03-07 15:42:52 -05:00
pthread_barrierattr_getpshared.c convert the barrier pshared option back to 0/1 values when getting it 2011-09-27 17:02:19 -04:00
pthread_barrierattr_init.c implement barrier attribute functions (essentially no-ops) 2011-03-07 15:42:52 -05:00
pthread_barrierattr_setpshared.c process-shared barrier support, based on discussion with bdonlan 2011-09-27 13:50:29 -04:00
pthread_cond_broadcast.c another cond var fix: requeue count race condition 2011-09-26 13:14:41 -04:00
pthread_cond_destroy.c synchronize cond var destruction with exiting waits 2011-10-02 22:58:28 -04:00
pthread_cond_init.c new futex-requeue-based pthread_cond_broadcast implementation 2011-09-25 02:38:03 -04:00
pthread_cond_signal.c redo cond vars again, use sequence numbers 2011-09-26 00:25:13 -04:00
pthread_cond_timedwait.c synchronize cond var destruction with exiting waits 2011-10-02 22:58:28 -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 small fix for new pthread cleanup stuff 2012-02-09 21:24:56 -05:00
pthread_detach.c fix more instances of old a_xchg (use new a_swap name) 2011-09-16 14:33:51 -04:00
pthread_equal.c macro for pthread_equal 2011-08-14 15:17:36 -04:00
pthread_getconcurrency.c implement pthread_[sg]etconcurrency. 2011-05-30 11:31:07 -04:00
pthread_getspecific.c optimize POSIX TSD for fast pthread_getspecific 2011-03-03 18:30:44 -05:00
pthread_join.c fix serious bug in pthread_join 2011-09-11 12:35:41 -04:00
pthread_key_create.c add proper fuxed-based locking for stdio 2011-07-30 08:02:14 -04:00
pthread_kill.c fix race condition in pthread_kill 2011-06-14 01:35:51 -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 add fast path for normal mutexes back to pthread_mutex_lock 2011-08-07 04:50:02 -04:00
pthread_mutex_timedlock.c unify and overhaul timed futex waits 2011-08-02 21:11:36 -04:00
pthread_mutex_trylock.c recovering ownerdead robust mutex must reset recursive lock count 2011-10-03 00:27:47 -04:00
pthread_mutex_unlock.c simplify robust mutex unlock code path 2011-10-03 00:19:05 -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 overhaul rwlocks to address several issues 2011-08-03 10:21:32 -04:00
pthread_rwlock_timedrdlock.c overhaul rwlocks to address several issues 2011-08-03 10:21:32 -04:00
pthread_rwlock_timedwrlock.c overhaul rwlocks to address several issues 2011-08-03 10:21:32 -04:00
pthread_rwlock_tryrdlock.c overhaul rwlocks to address several issues 2011-08-03 10:21:32 -04:00
pthread_rwlock_trywrlock.c overhaul rwlocks to address several issues 2011-08-03 10:21:32 -04:00
pthread_rwlock_unlock.c fix failure-to-wake in rwlock unlock 2011-10-01 09:11:35 -04:00
pthread_rwlock_wrlock.c overhaul rwlocks to address several issues 2011-08-03 10:21:32 -04: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 work around "signal loses thread pointer" issue with "approach 2" 2012-02-27 18:51:02 -05:00
pthread_setcancelstate.c fix minor bugs due to incorrect threaded-predicate semantics 2011-04-20 21:41:45 -04:00
pthread_setcanceltype.c handle pending cancellation when enabling async cancellation 2011-09-04 21:37:07 -04:00
pthread_setconcurrency.c implement pthread_[sg]etconcurrency. 2011-05-30 11:31:07 -04:00
pthread_setspecific.c optimize POSIX TSD for fast pthread_getspecific 2011-03-03 18:30:44 -05:00
pthread_sigmask.c clean up pthread_sigmask/sigprocmask dependency order 2011-07-30 21:09:14 -04: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 fix more instances of old a_xchg (use new a_swap name) 2011-09-16 14:33:51 -04:00
pthread_spin_trylock.c fix more instances of old a_xchg (use new a_swap name) 2011-09-16 14:33:51 -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 use weak aliases rather than function pointers to simplify some code 2011-08-06 20:09:51 -04: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 fix uninitialized waiters field in semaphores 2011-04-19 13:16:59 -04:00
sem_open.c fix useless use of potentially-uninitialized mode variable in sem_open 2011-06-26 16:34:05 -04:00
sem_post.c report sem value overflows in sem_post 2011-10-26 00:28:47 -04:00
sem_timedwait.c fix sem_timedwait bug introduced in timedwait unification 2011-08-02 21:15:20 -04:00
sem_trywait.c overhaul posix semaphores to fix destructability race 2011-08-02 19:19:09 -04: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
synccall.c pthread and synccall cleanup, new __synccall_wait op 2011-08-12 10:32:22 -04:00
syscall_cp.c overhaul pthread cancellation 2011-04-17 11:43:03 -04:00