UNLOCK_PAGE(9) Memory Management in Linux UNLOCK_PAGE(9)NAME
unlock_page - unlock a locked page
SYNOPSIS
void unlock_page(struct page * page);
ARGUMENTS
page
the page
DESCRIPTION
Unlocks the page and wakes up sleepers in ___wait_on_page_locked. Also wakes sleepers in wait_on_page_writeback because the wakeup
mechananism between PageLocked pages and PageWriteback pages is shared. But that's OK - sleepers in wait_on_page_writeback just go back to
sleep.
The mb is necessary to enforce ordering between the clear_bit and the read of the waitqueue (to avoid SMP races with a parallel
wait_on_page_locked).
COPYRIGHT Kernel Hackers Manual 2.6. July 2010 UNLOCK_PAGE(9)
Check Out this Related Man Page
wakeup(9r)wakeup(9r)NAME
wakeup - General: Wakes up all processes sleeping on a specified address
SYNOPSIS
void wakeup(
caddr_t channel );
ARGUMENTS
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 request-
ing 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)wakeup(9r)