freebsd-skq/lib/libkse/thread
deischen a5b13ff571 Use a generic way to back threads out of wait queues when handling
signals instead of having more intricate knowledge of thread state
within signal handling.

Simplify signal code because of above (by David Xu).

Use macros for libpthread usage of pthread_cleanup_push() and
pthread_cleanup_pop().  This removes some instances of malloc()
and free() from the semaphore and pthread_once() implementations.

When single threaded and forking(), make sure that the current
thread's signal mask is inherited by the forked thread.

Use private mutexes for libc and libpthread.  Signals are
deferred while threads hold private mutexes.  This fix also
breaks www/linuxpluginwrapper; a patch that fixes it is at
http://people.freebsd.org/~deischen/kse/linuxpluginwrapper.diff

Fix race condition in condition variables where handling a
signal (pthread_kill() or kill()) may not see a wakeup
(pthread_cond_signal() or pthread_cond_broadcast()).

In collaboration with:	davidxu
2004-12-18 18:07:37 +00:00
..
Makefile.inc Add a wrapper for execve(). The exec'd process must be started with 2004-09-26 06:50:15 +00:00
thr_accept.c accept() returns a file descriptor when it succeeds which is very 2003-12-09 23:40:27 +00:00
thr_aio_suspend.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_atfork.c Add pthread_atfork() source code. Dan forgot to commit this file. 2003-11-05 03:42:10 +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 pthread API should return error code in return value not in errno. 2003-09-25 13:53:49 +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 Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_clean.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_close.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_concurrency.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_cond.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +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_connect.c accept() returns a file descriptor when it succeeds which is very 2003-12-09 23:40:27 +00:00
thr_creat.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_create.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +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_execve.c Use PTHREAD_SCOPE_SYSTEM to decide what should be done. 2004-10-07 14:23:15 +00:00
thr_exit.c Check unhandled signals before thread marks itself as DEAD, 2004-10-23 23:37:54 +00:00
thr_fcntl.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_find_thread.c 1. Move thread list flags into new separate member, and atomically 2004-10-23 23:28:36 +00:00
thr_fork.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_fsync.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +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 Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_join.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_kern.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +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 Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +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 Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +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 Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_once.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_open.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_pause.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_poll.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_printf.c style cleanup: Remove duplicate $FreeBSD$ tags. 2004-02-10 20:42:33 +00:00
thr_priority_queue.c s/TMDF_DONOTRUNUSER/TMDF_SUSPEND/g 2004-08-03 02:23:06 +00:00
thr_private.h Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_pselect.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_pspinlock.c Libpthread uses the convention that all of its (non-weak) symbols 2003-11-04 19:56:12 +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 Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_readv.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +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 style(9) 2003-11-05 18:19:24 +00:00
thr_rwlock.c Add a simple work-around for deadlocking on recursive read locks 2004-01-08 15:37:09 +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 Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +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 Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +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 Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_sigaction.c If syscall failed, restore old sigaction and return error to thread. 2003-09-25 06:23:40 +00:00
thr_sigaltstack.c Return error code in errno, not in return value. 2004-01-02 00:38:42 +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 Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_sigwait.c Fix a POSIX conformance bug. POSIX says sigwait should return error number 2004-03-17 02:12:19 +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 Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_spec.c Add code to support thread debugging. 2004-07-13 22:49:58 +00:00
thr_spinlock.c Use a generic way to back threads out of wait queues when handling 2004-12-18 18:07:37 +00:00
thr_stack.c Allocate red zone and stack space together and then split red zone from 2004-10-06 08:11:07 +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_symbols.c Add a file to collection all symbols will be needed by debugger. 2004-08-16 03:25:07 +00:00
thr_system.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_tcdrain.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_vfork.c
thr_wait4.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_wait.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_waitpid.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_write.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +00:00
thr_writev.c Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename 2003-12-09 02:20:56 +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