freebsd-dev/lib/libc_r/uthread
Daniel Eischen b5a8a15c2f Don't needlessly poll file descriptors when there are no
file descriptors needing to be polled (Doh!).  Reported
by Dan Nelson <dnelson@emsphone.com>.

Don't install and start the scheduling timer until the
first thread is created.  This prevents the overhead of
having a periodic scheduling signal in a single threaded
program.  Reported by Dan Nelson <dnelson@emsphone.com>.

Allow builtin longjmps out of application installed
signal handlers without the need perform any post-handler
cleanup:

  o Change signal handling to save the threads interrupted
    context on the stack.  The threads current context is
    now always stored in the same place (in the pthread).
    If and when a signal handler returns, the interrupted
    context is copied back to the storage area in the pthread.

  o Before calling invoking a signal handler for a thread,
    back the thread out of any internal waiting queues
    (mutex, CV, join, etc) to which it belongs.

Rework uthread_info.c a bit to make it easier to change
the format of a thread dump.

Use an alternal signal stack for the thread library's
signal handler.  This allows us to fiddle with the main
threads stack without fear of it being in use.

Reviewed by:	jasone
2000-11-09 05:08:26 +00:00
..
Makefile.inc Add thread-safe wrapper for fpathconf(2) syscall. 2000-09-19 18:01:03 +00:00
pthread_private.h Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_accept.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_aio_suspend.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_attr_destroy.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_attr_getdetachstate.c Fixed missing consts for function parameters, so that the code matches 2000-05-11 15:57:17 +00:00
uthread_attr_getinheritsched.c add pthread_cancel, obtained from OpenBSD. 1999-11-28 05:38:13 +00:00
uthread_attr_getschedparam.c add pthread_cancel, obtained from OpenBSD. 1999-11-28 05:38:13 +00:00
uthread_attr_getschedpolicy.c add pthread_cancel, obtained from OpenBSD. 1999-11-28 05:38:13 +00:00
uthread_attr_getscope.c add pthread_cancel, obtained from OpenBSD. 1999-11-28 05:38:13 +00:00
uthread_attr_getstackaddr.c Fixed missing consts for function parameters, so that the code matches 2000-05-11 15:57:17 +00:00
uthread_attr_getstacksize.c Fixed missing consts for function parameters, so that the code matches 2000-05-11 15:57:17 +00:00
uthread_attr_init.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_attr_setcreatesuspend_np.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_attr_setdetachstate.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_attr_setinheritsched.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_attr_setprio.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_attr_setschedparam.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_attr_setschedpolicy.c Add missing man pages. Fix various compliance bugs, mostly having to do with 2000-05-02 06:51:40 +00:00
uthread_attr_setscope.c Add missing man pages. Fix various compliance bugs, mostly having to do with 2000-05-02 06:51:40 +00:00
uthread_attr_setstackaddr.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_attr_setstacksize.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_autoinit.cc Change REGENTS -> AUTHOR in the copyright. 2000-01-06 12:16:16 +00:00
uthread_bind.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_cancel.c pthread_mutex_lock(), pthread_cond_trywait(), and pthread_cond_wait() are 2000-06-14 17:17:41 +00:00
uthread_clean.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_close.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_cond.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_condattr_destroy.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_condattr_init.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_connect.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_creat.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_create.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_detach.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_dup2.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_dup.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_equal.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_execve.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_exit.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_fchflags.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_fchmod.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_fchown.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_fcntl.c Use _fcntl() (not fcntl()) inside of fcntl(). 2000-01-28 22:10:27 +00:00
uthread_fd.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_file.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_find_thread.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_flock.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_fork.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_fpathconf.c Add thread-safe wrapper for fpathconf(2) syscall. 2000-09-19 18:01:03 +00:00
uthread_fstat.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_fstatfs.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_fsync.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_gc.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_getdirentries.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_getpeername.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_getprio.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_getschedparam.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_getsockname.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_getsockopt.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_info.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_init.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_ioctl.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_jmp.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_join.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_kern.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_kevent.c Prevent the thread-safe version of kevent from getting 2000-11-09 05:00:06 +00:00
uthread_kill.c Fixes for signal handling: 1999-12-17 00:56:36 +00:00
uthread_listen.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_mattr_init.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_mattr_kind_np.c Add missing man pages. Fix various compliance bugs, mostly having to do with 2000-05-02 06:51:40 +00:00
uthread_msync.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_multi_np.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_mutex_prioceiling.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_mutex_protocol.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_mutex.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_mutexattr_destroy.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_nanosleep.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_once.c Call _thread_init() from pthread_once() if it has not already been called. 2000-07-21 09:31:13 +00:00
uthread_open.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_pause.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_pipe.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_poll.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_priority_queue.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_read.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_readv.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_recvfrom.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_recvmsg.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_resume_np.c pthread_mutex_lock(), pthread_cond_trywait(), and pthread_cond_wait() are 2000-06-14 17:17:41 +00:00
uthread_rwlock.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_rwlockattr.c Track libc's three-tier symbol naming. libc_r must currently implement 2000-01-12 09:28:58 +00:00
uthread_select.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_self.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_sem.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_sendfile.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_sendmsg.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_sendto.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_seterrno.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_setprio.c Implement continuations to correctly handle [sig|_]longjmp() inside of a 2000-01-19 07:04:50 +00:00
uthread_setschedparam.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_setsockopt.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_shutdown.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_sig.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_sigaction.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_sigblock.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_sigmask.c Don't needlessly poll file descriptors when there are no 2000-11-09 05:08:26 +00:00
uthread_signal.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_sigpending.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_sigprocmask.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_sigsetmask.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_sigsuspend.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_sigwait.c Make pthread_kill() know about temporary signal handlers installed 2000-10-25 11:46:07 +00:00
uthread_single_np.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_sleep.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_socket.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_socketpair.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_spec.c -Wall and minor style(9) cleanups. 1999-12-28 18:13:04 +00:00
uthread_spinlock.c Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(), 2000-01-27 23:07:25 +00:00
uthread_suspend_np.c pthread_mutex_lock(), pthread_cond_trywait(), and pthread_cond_wait() are 2000-06-14 17:17:41 +00:00
uthread_switch_np.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uthread_system.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_tcdrain.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_vfork.c In libc_r, rename vfork syscall to _thread_sys_vfork and make vfork an alias 1998-09-12 22:03:20 +00:00
uthread_wait4.c #include <sys/types.h> 2000-10-15 20:04:09 +00:00
uthread_wait.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_waitpid.c Change my email address in the copyright notices for the sake of consistency 2000-07-18 01:38:19 +00:00
uthread_write.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00
uthread_writev.c Use __strong_reference() instead of __weak_reference() to assure that the 2000-01-29 22:53:55 +00:00
uthread_yield.c Implement zero system call thread switching. Performance of 2000-10-13 22:12:32 +00:00