 |
Index for Section 9r |
|
 |
Alphabetical listing for W |
|
 |
Bottom of page |
|
wakeup(9r)
NAME
wakeup - General: Wakes up all processes sleeping on a specified address
SYNOPSIS
void wakeup(
caddr_t channel );
ARGUMENTS
channel
Specifies the address on which the wakeup is to be issued.
DESCRIPTION
The wakeup routine wakes up all processes sleeping on the address specified
by the channel argument. All processes sleeping on this address are
awakened and made ready to be scheduled according to the priorities they
specified when they went to sleep. It is possible that there are no
processes sleeping on the channel at the time the wakeup is issued. This
situation can occur for a variety of reasons and does not represent an
error condition.
The sleep and wakeup routines block and unblock a process. Generally, a
device driver issues these routines on behalf of a process requesting I/O
while a transfer is in progress. That is, a process requesting I/O is put
to sleep on an address associated with the request by the appropriate
device driver routine. When the transfer has asynchronously completed, the
device driver interrupt service routine issues a wakeup on the address
associated with the completed request. This action makes the relevant
process to be scheduled.
The process resumes execution within the relevant device driver routine at
the point immediately following the request to sleep. The driver, on behalf
of the process, can then determine whether the condition for which it was
sleeping (in this example, completion of an I/O request) has been removed.
If so, it can continue on to complete the I/O request. Otherwise, the
appropriate driver routine can decide to put the process back to sleep to
await removal of the indicated condition.
RETURN VALUES
None
SEE ALSO
Routines: mpsleep(9r), sleep(9r)
 |
Index for Section 9r |
|
 |
Alphabetical listing for W |
|
 |
Top of page |
|