Remove references to asleep/await.

This commit is contained in:
jhb 2001-08-23 23:37:31 +00:00
parent 6208b149df
commit 98adb2ab0c
2 changed files with 1 additions and 114 deletions

View File

@ -152,7 +152,7 @@ MLINKS+=scheduler.9 roundrobin_interval.9 scheduler.9 sched_setup.9
MLINKS+=scheduler.9 schedclock.9 scheduler.9 schedcpu.9
MLINKS+=scheduler.9 setrunnable.9 scheduler.9 updatepri.9
MLINKS+=sleep.9 tsleep.9 sleep.9 wakeup.9 sleep.9 wakeup_one.9
MLINKS+=sleep.9 asleep.9 sleep.9 await.9 sleep.9 msleep.9
MLINKS+=sleep.9 msleep.9
MLINKS+=sleepqueue.9 endtsleep.9 sleepqueue.9 sleepinit.9
MLINKS+=sleepqueue.9 unsleep.9
MLINKS+=buf.9 bp.9

View File

@ -32,8 +32,6 @@
.Nm sleep ,
.Nm msleep ,
.Nm tsleep ,
.Nm asleep ,
.Nm await ,
.Nm wakeup
.Nd wait for events
.Sh SYNOPSIS
@ -44,10 +42,6 @@
.Fn tsleep "void *ident" "int priority" "const char *wmesg" "int timo"
.Ft int
.Fn msleep "void *ident" "struct mtx *mtx" "int priority" "const char *wmesg" "int timo"
.Ft int
.Fn asleep "void *ident" "int priority" "const char *wmesg" "int timo"
.Ft int
.Fn await "int priority" "int timo"
.Ft void
.Fn wakeup "void *ident"
.Ft void
@ -127,102 +121,6 @@ parameter will not be entered before returning. The mutex is
used to ensure that a condition can be checked atomicly, and
that the current process can be suspended without missing a
change to the condition, or an associated wakeup.
.Pp
.Nm Asleep
implements the new asynchronous sleep function. It takes the same arguments
as
.Fn tsleep
and places the process on the appropriate wait queue, but
.Fn asleep
leaves the process runnable and returns immediately. The caller is then
expected to, at some point in the future, call
.Fn await
to actually wait for the previously queued wait condition.
If
.Fn asleep
is called several times, only the most recent call is effective.
.Fn asleep
may be called with an
.Ar ident
value of NULL
to remove any previously queued condition.
.Pp
.Nm Await
implements the new asynchronous wait function. When
.Fn asleep
is called on an identifier it associates the process with that
identifier but does not block.
.Fn await
will actually block the process until
.Fn wakeup
is called on that identifier any time after the
.Fn asleep .
If
.Fn wakeup
is called after you
.Fn asleep
but before you
.Fn await
then the
.Fn await
call is effectively a NOP.
If
.Fn await
is called multiple times without an intervening
.Fn asleep ,
the
.Fn await
is effectively a NOP but will also call
.Fn mi_switch
for safety. The
.Fn await
function allows you to override the priority and timeout values to be used.
If the value -1 is specified for an argument, the value is taken from the
previous
.Fn asleep
call. If -1 is passed for the priority you must be prepared to catch signal
conditions if the prior call to
.Fn asleep
specified it in its priority. If -1 is passed for the timeout you must be
prepared to catch a timeout condition if the prior call to
.Fn asleep
specified a timeout. When you use -1, it is usually a good idea to not make
assumptions as to the arguments used by the prior
.Fn asleep
call.
.Pp
The
.Fn asleep
and
.Fn await
functions are mainly used by the kernel to shift the burden of blocking
away from extremely low level routines and to push it onto their callers.
This in turn allows more complex interlocking code to
.Em backout
of a temporary resource failure
(such as lack of memory) in order to release major locks prior to actually
blocking, and to then retry the operation on wakeup. This key feature is
expected to be heavily used in SMP situations in order to allow code to make
better use of spinlocks. A spinlock, by its very nature, cannot be used
around code that might block. It is hoped that these capabilities will
make it easier to migrate the SMP master locks deeper into the kernel.
.Pp
These routines may also be used to avoid nasty spl*() calls to get around
race conditions with simple conditional test/wait interlocks. You simply
call
.Fn asleep
prior to your test, then conditionally
.Fn await
only if the test fails. It is usually a good idea to cancel an
.Fn asleep
if you wind up never calling the related
.Fn await ,
but it is not required. If you do not want to waste cpu calling
.Fn asleep
unnecessarily, you can surround the whole thing with a second test. The
race condition is still handled by the inside
.Fn asleep
call.
.Sh RETURN VALUES
See above.
.Sh SEE ALSO
@ -237,12 +135,6 @@ appeared in a very early version of Unix.
appeared in
.Bx 4.4 .
.Pp
.Nm Asleep Ns / Ns Nm await
first appeared in
.Fx 3.0
and is designed to shift the burden of blocking
away from extremely low level routines and push it up to their callers.
.Pp
.Nm Sleep
used to be the traditional form. It doesn't let you specify a timeout or a
.Ar wmesg ,
@ -251,8 +143,3 @@ hence it has been discontinued.
.An -nosplit
This man page was written by
.An J\(:org Wunsch .
.Nm Asleep
and
.Nm await
were designed and written by
.An Matthew Dillon .