summaryrefslogtreecommitdiffstats
path: root/share/man/man9/mutex.9
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2007-03-09 22:41:01 +0000
committerjhb <jhb@FreeBSD.org>2007-03-09 22:41:01 +0000
commitf5e396934025920e30b32a3eef21d05548f16898 (patch)
tree343c44631b470578282dfd1c1d3fb73ed2833f3c /share/man/man9/mutex.9
parentb470e17165153afeed8259afb043250b76f64e76 (diff)
downloadFreeBSD-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.914
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
OpenPOWER on IntegriCloud