diff options
author | jhb <jhb@FreeBSD.org> | 2007-03-09 22:41:01 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2007-03-09 22:41:01 +0000 |
commit | f5e396934025920e30b32a3eef21d05548f16898 (patch) | |
tree | 343c44631b470578282dfd1c1d3fb73ed2833f3c /share/man/man9/mutex.9 | |
parent | b470e17165153afeed8259afb043250b76f64e76 (diff) | |
download | FreeBSD-src-f5e396934025920e30b32a3eef21d05548f16898.zip FreeBSD-src-f5e396934025920e30b32a3eef21d05548f16898.tar.gz |
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.
Diffstat (limited to 'share/man/man9/mutex.9')
-rw-r--r-- | share/man/man9/mutex.9 | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/share/man/man9/mutex.9 b/share/man/man9/mutex.9 index cf89175..c73dfee 100644 --- a/share/man/man9/mutex.9 +++ b/share/man/man9/mutex.9 @@ -45,6 +45,7 @@ .Nm mtx_unlock_spin , .Nm mtx_unlock_flags , .Nm mtx_unlock_spin_flags , +.Nm mtx_sleep , .Nm mtx_initialized , .Nm mtx_owned , .Nm mtx_recursed , @@ -80,6 +81,8 @@ .Ft void .Fn mtx_unlock_spin_flags "struct mtx *mutex" "int flags" .Ft int +.Fn mtx_sleep "void *chan" "struct mtx *mtx" "int priority" "const char *wmesg" "int timo" +.Ft int .Fn mtx_initialized "struct mtx *mutex" .Ft int .Fn mtx_owned "struct mtx *mutex" @@ -305,6 +308,15 @@ or have another thread blocked on the mutex when it is destroyed. .Pp The +.Fn mtx_sleep +function is used to atomically release +.Fa mtx +while waiting for an event. +For more details on the parameters to this function, +see +.Xr sleep 9 . +.Pp +The .Fn mtx_initialized function returns non-zero if .Fa mutex @@ -498,11 +510,11 @@ No locks are needed when calling these functions. .Sh SEE ALSO .Xr condvar 9 , .Xr LOCK_PROFILING 9 , -.Xr msleep 9 , .Xr mtx_pool 9 , .Xr panic 9 , .Xr rwlock 9 , .Xr sema 9 , +.Xr sleep 9 , .Xr sx 9 .Sh HISTORY These |