freebsd-dev/lib/libkse/thread
David Xu 3d10572d1a As comments in _mutex_lock_backout state, only current thread
can clear the pointer to mutex, not the thread doing mutex
handoff. Because _mutex_lock_backout does not hold scheduler
lock while testing THR_FLAGS_IN_SYNCQ and then reading mutex
pointer, it is possible mutex owner begin to unlock and
handoff the mutex to the current thread, and mutex pointer
will be cleared to NULL before current thread reading it, so
current thread will end up with deferencing a NULL pointer,
Fix the race by making mutex waiters to clear their mutex pointers.
While I am here, also save inherited priority in mutex for
PTHREAD_PRIO_INERIT mutex in mutex_trylock_common just like what
we did in mutex_lock_common.
2003-09-24 12:52:57 +00:00
..
Makefile.inc Add code to support pthread spin lock. 2003-09-09 06:57:51 +00:00
thr_aio_suspend.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_attr_destroy.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_get_np.c Avoid accessing user provided parameters in critical region. 2003-07-07 04:28:23 +00:00
thr_attr_getdetachstate.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getguardsize.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getinheritsched.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getschedparam.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getschedpolicy.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getscope.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getstack.c Add pthread_attr_getstack() and pthread_attr_setstack(). 2003-02-10 08:48:04 +00:00
thr_attr_getstackaddr.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_getstacksize.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_init.c Cleanup thread accounting. Don't reset a threads timeslice 2003-07-18 02:46:55 +00:00
thr_attr_setcreatesuspend_np.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_attr_setdetachstate.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_setguardsize.c Respect POSIX specification, a value return from pthread_attr_getguardsize 2003-09-14 22:39:44 +00:00
thr_attr_setinheritsched.c Check invalid parameter and return EINVAL. 2003-09-14 22:28:13 +00:00
thr_attr_setschedparam.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_attr_setschedpolicy.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_setscope.c If user is seting scope process flag, clear PTHREAD_SCOPE_SYSTEM bit 2003-09-14 22:32:28 +00:00
thr_attr_setstack.c Add pthread_attr_getstack() and pthread_attr_setstack(). 2003-02-10 08:48:04 +00:00
thr_attr_setstackaddr.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_attr_setstacksize.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_autoinit.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_barrier.c Add code to support barrier synchronous object and implement 2003-09-04 14:06:43 +00:00
thr_barrierattr.c Add code to support barrier synchronous object and implement 2003-09-04 14:06:43 +00:00
thr_cancel.c If thread mode is not activated yet, don't do extra work. 2003-08-10 22:07:28 +00:00
thr_clean.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_close.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_concurrency.c Allow the concurrency level to be reduced. 2003-08-30 12:09:16 +00:00
thr_cond.c Avoid garbage bits in c_flags by direct assigning value. 2003-09-14 22:33:32 +00:00
thr_condattr_destroy.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_condattr_init.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_creat.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_create.c 1. Allocating and freeing lock related resource in _thr_alloc and _thr_free 2003-09-14 22:52:16 +00:00
thr_detach.c Move idle kse wakeup to outside of regions where locks are held. 2003-07-23 02:11:07 +00:00
thr_equal.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_exit.c 1. Allocating and freeing lock related resource in _thr_alloc and _thr_free 2003-09-14 22:52:16 +00:00
thr_fcntl.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_find_thread.c o Eliminate upcall for PTHREAD_SYSTEM_SCOPE thread, now it 2003-07-17 23:02:30 +00:00
thr_fork.c Save and restore errno around sigprocmask. 2003-08-19 03:33:51 +00:00
thr_fsync.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_getprio.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_getschedparam.c Avoid accessing user provided parameters in critical region. 2003-07-07 04:28:23 +00:00
thr_info.c Print waitset correctly. 2003-09-22 00:40:23 +00:00
thr_init.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_join.c Avoid accessing user provided parameters in critical region. 2003-07-07 04:28:23 +00:00
thr_kern.c Free thread name memory if there is. 2003-09-23 04:02:23 +00:00
thr_kill.c o Use a daemon thread to monitor signal events in kernel, if pending 2003-06-28 09:55:02 +00:00
thr_main_np.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_mattr_init.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_mattr_kind_np.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_msync.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_multi_np.c Revamp suspend and resume. While I'm here add pthread_suspend_all_np() 2002-05-24 04:32:28 +00:00
thr_mutex_prioceiling.c Avoid accessing user provided parameters in critical region. 2003-07-07 04:28:23 +00:00
thr_mutex_protocol.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_mutex.c As comments in _mutex_lock_backout state, only current thread 2003-09-24 12:52:57 +00:00
thr_mutexattr_destroy.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_nanosleep.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_once.c Original pthread_once code has memory leak if pthread_once_t is used in 2003-09-09 22:38:12 +00:00
thr_open.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_pause.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_poll.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_printf.c Support printing 64 bits pointer and long integer. 2003-08-19 08:29:33 +00:00
thr_priority_queue.c o Don't add a scope system thread's KSE to the list of available 2003-04-28 23:56:12 +00:00
thr_private.h Save and restore timeout field for signal frame just like what we did 2003-09-22 14:40:36 +00:00
thr_pselect.c Eek, staticize a couple of functions that shouldn't 2003-05-19 23:04:50 +00:00
thr_pspinlock.c Add code to support pthread spin lock. 2003-09-09 06:57:51 +00:00
thr_raise.c Override libc function raise(), in threading mode, raise() will 2003-07-19 05:25:49 +00:00
thr_read.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_readv.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_resume_np.c Move idle kse wakeup to outside of regions where locks are held. 2003-07-23 02:11:07 +00:00
thr_rtld.c Tweak rtld lock to allow recursive on reader lock and detect recursive 2003-08-10 22:15:03 +00:00
thr_rwlock.c Add small piece of code to support pthread_rwlock_timedrdlock and 2003-09-06 00:07:52 +00:00
thr_rwlockattr.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_select.c If select() is only used for sleep, convert it to nanosleep, 2003-07-03 13:36:29 +00:00
thr_self.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_sem.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_seterrno.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_setprio.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_setschedparam.c Add an i386-specifc hack to always set %gs. There still seems 2003-04-21 04:02:56 +00:00
thr_sig.c Save and restore timeout field for signal frame just like what we did 2003-09-22 14:40:36 +00:00
thr_sigaction.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_sigmask.c pthread api should return error code in return value, not in errno. 2003-09-18 12:19:28 +00:00
thr_sigpending.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_sigprocmask.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_sigsuspend.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_sigwait.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00
thr_single_np.c Revamp suspend and resume. While I'm here add pthread_suspend_all_np() 2002-05-24 04:32:28 +00:00
thr_sleep.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_spec.c Add back a loop for up to PTHREAD_DESTRUCTOR_ITERATIONS to 2003-08-20 02:34:14 +00:00
thr_spinlock.c Don't really spin on a spinlock; silently convert it to the same 2003-05-29 17:10:45 +00:00
thr_stack.c Respect POSIX specification, a value return from pthread_attr_getguardsize 2003-09-14 22:39:44 +00:00
thr_suspend_np.c Fix suspend and resume. 2003-05-04 16:17:01 +00:00
thr_switch_np.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_system.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_tcdrain.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_vfork.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
thr_wait4.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_wait.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_waitpid.c Don't assume sizeof(long) = sizeof(int) on x86; use int 2003-09-03 17:56:26 +00:00
thr_write.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_writev.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_yield.c Treat initial thread as scope system thread when KSE mode is not activated 2003-08-18 03:58:29 +00:00