From owner-cvs-src@FreeBSD.ORG Fri Mar 9 22:41:02 2007 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5404516A409; Fri, 9 Mar 2007 22:41:02 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4216913C4B5; Fri, 9 Mar 2007 22:41:02 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l29Mf2h4062861; Fri, 9 Mar 2007 22:41:02 GMT (envelope-from jhb@repoman.freebsd.org) Received: (from jhb@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l29Mf2Ds062856; Fri, 9 Mar 2007 22:41:02 GMT (envelope-from jhb) Message-Id: <200703092241.l29Mf2Ds062856@repoman.freebsd.org> From: John Baldwin Date: Fri, 9 Mar 2007 22:41:02 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/share/man/man9 Makefile condvar.9 lock.9 mi_switch.9 mtx_pool.9 mutex.9 rwlock.9 sleep.9 sleepqueue.9 sx.9 thread_exit.9 src/sys/kern kern_synch.c src/sys/sys mutex.h rwlock.h sleepqueue.h sx.h systm.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Mar 2007 22:41:02 -0000 jhb 2007-03-09 22:41:01 UTC FreeBSD src repository Modified files: share/man/man9 Makefile condvar.9 lock.9 mi_switch.9 mtx_pool.9 mutex.9 rwlock.9 sleep.9 sleepqueue.9 sx.9 thread_exit.9 sys/kern kern_synch.c sys/sys mutex.h rwlock.h sleepqueue.h sx.h systm.h Log: Allow threads to atomically release rw and sx locks while waiting for an event. Locking primitives that support this (mtx, rw, and sx) now each include their own foo_sleep() routine. - Rename msleep() to _sleep() and change it's 'struct mtx' object to a 'struct lock_object' pointer. _sleep() uses the recently added lc_unlock() and lc_lock() function pointers for the lock class of the specified lock to release the lock while the thread is suspended. - Add wrappers around _sleep() for mutexes (mtx_sleep()), rw locks (rw_sleep()), and sx locks (sx_sleep()). msleep() still exists and is now identical to mtx_sleep(), but it is deprecated. - Rename SLEEPQ_MSLEEP to SLEEPQ_SLEEP. - Rewrite much of sleep.9 to not be msleep(9) centric. - Flesh out the 'RETURN VALUES' section in sleep.9 and add an 'ERRORS' section. - Add __nonnull(1) to _sleep() and msleep_spin() so that the compiler will warn if you try to pass a NULL wait channel. The functions already have a KASSERT to that effect. Revision Changes Path 1.300 +3 -0 src/share/man/man9/Makefile 1.17 +1 -1 src/share/man/man9/condvar.9 1.15 +4 -4 src/share/man/man9/lock.9 1.20 +7 -6 src/share/man/man9/mi_switch.9 1.7 +2 -3 src/share/man/man9/mtx_pool.9 1.54 +13 -1 src/share/man/man9/mutex.9 1.9 +10 -0 src/share/man/man9/rwlock.9 1.59 +111 -68 src/share/man/man9/sleep.9 1.15 +5 -5 src/share/man/man9/sleepqueue.9 1.36 +11 -1 src/share/man/man9/sx.9 1.3 +2 -2 src/share/man/man9/thread_exit.9 1.292 +33 -28 src/sys/kern/kern_synch.c 1.91 +3 -0 src/sys/sys/mutex.h 1.9 +2 -0 src/sys/sys/rwlock.h 1.11 +1 -1 src/sys/sys/sleepqueue.h 1.27 +2 -0 src/sys/sys/sx.h 1.252 +9 -4 src/sys/sys/systm.h