freebsd-dev/lib/libpthread/thread
Daniel Eischen 1cb570c531 Change low-level locking a bit so that we can tell if
a lock is being waitied on.

Fix a races in join and cancellation.

When trying to wait on a CV and the library is not yet
threaded, make it threaded so that waiting actually works.

When trying to nanosleep() and we're not threaded, just
call the system call nanosleep instead of adding the thread
to the wait queue.

Clean up adding/removing new threads to the "all threads queue",
assigning them unique ids, and tracking how many active threads
there are.  Do it all when the thread is added to the scheduling
queue instead of making pthread_create() know how to do it.

Fix a race where a thread could be marked for signal delivery
but it could be exited before we actually add the signal to it.

Other minor cleanups and bug fixes.

Submitted by:	davidxu
Approved by:	re@ (blanket for libpthread)
2003-05-24 02:29:25 +00:00
..
Makefile.inc Add a working pthread_[gs]etconcurrency. Initial null implementation 2003-04-22 20:29:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_attr_setinheritsched.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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_cancel.c Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +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 Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_cond.c Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_create.c Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_detach.c Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +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 Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +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 Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_fork.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_info.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_init.c Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +00:00
thr_join.c Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_kern.c Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_kill.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +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 Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_once.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +00:00
thr_pselect.c Eek, staticize a couple of functions that shouldn't 2003-05-19 23:04:50 +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 Fix suspend and resume. 2003-05-04 16:17:01 +00:00
thr_rwlock.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Change low-level locking a bit so that we can tell if 2003-05-24 02:29:25 +00:00
thr_sigaction.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_sigmask.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_sigpending.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_sigprocmask.c Make the changes needed for libpthread to compile in its new home. 2002-09-16 08:45:36 +00:00
thr_sigsuspend.c Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +00:00
thr_sigwait.c Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_spec.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_spinlock.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_stack.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_tcdrain.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_wait.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +00:00
thr_waitpid.c Revamp libpthread so that it has a chance of working in an SMP 2003-04-18 05:04:16 +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 Add a method of yielding the current thread with the scheduler 2003-05-16 19:58:30 +00:00