From owner-cvs-all@FreeBSD.ORG Sat Dec 18 18:07:38 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0474216A4CE; Sat, 18 Dec 2004 18:07:38 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id BE43243D1F; Sat, 18 Dec 2004 18:07:37 +0000 (GMT) (envelope-from deischen@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id iBII7bPw071122; Sat, 18 Dec 2004 18:07:37 GMT (envelope-from deischen@repoman.freebsd.org) Received: (from deischen@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id iBII7bHN071121; Sat, 18 Dec 2004 18:07:37 GMT (envelope-from deischen) Message-Id: <200412181807.iBII7bHN071121@repoman.freebsd.org> From: Daniel Eischen Date: Sat, 18 Dec 2004 18:07:37 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/lib/libpthread pthread.map src/lib/libpthread/sys thr_error.c src/lib/libpthread/thread thr_cancel.c thr_clean.c thr_concurrency.c thr_cond.c thr_create.c thr_fork.c thr_init.c thr_kern.c thr_mutex.c thr_once.c thr_private.h thr_sem.c ... X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Dec 2004 18:07:38 -0000 deischen 2004-12-18 18:07:37 UTC FreeBSD src repository Modified files: lib/libpthread pthread.map lib/libpthread/sys thr_error.c lib/libpthread/thread thr_cancel.c thr_clean.c thr_concurrency.c thr_cond.c thr_create.c thr_fork.c thr_init.c thr_kern.c thr_mutex.c thr_once.c thr_private.h thr_sem.c thr_sig.c thr_sigsuspend.c thr_spinlock.c Log: 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 Revision Changes Path 1.14 +1 -0 src/lib/libpthread/pthread.map 1.8 +1 -0 src/lib/libpthread/sys/thr_error.c 1.32 +14 -6 src/lib/libpthread/thread/thr_cancel.c 1.9 +3 -1 src/lib/libpthread/thread/thr_clean.c 1.9 +7 -0 src/lib/libpthread/thread/thr_concurrency.c 1.52 +118 -102 src/lib/libpthread/thread/thr_cond.c 1.59 +1 -3 src/lib/libpthread/thread/thr_create.c 1.35 +14 -10 src/lib/libpthread/thread/thr_fork.c 1.67 +1 -0 src/lib/libpthread/thread/thr_init.c 1.116 +16 -39 src/lib/libpthread/thread/thr_kern.c 1.47 +79 -13 src/lib/libpthread/thread/thr_mutex.c 1.10 +4 -2 src/lib/libpthread/thread/thr_once.c 1.121 +19 -5 src/lib/libpthread/thread/thr_private.h 1.16 +4 -4 src/lib/libpthread/thread/thr_sem.c 1.83 +119 -156 src/lib/libpthread/thread/thr_sig.c 1.25 +1 -0 src/lib/libpthread/thread/thr_sigsuspend.c 1.22 +10 -6 src/lib/libpthread/thread/thr_spinlock.c