Main index | Section 9 | Options |
#include <sys/param.h>
#include <vm/vm.h>
#include <vm/vm_page.h>
options INVARIANTS
options INVARIANT_SUPPORT
void
vm_page_assert_sbusied(vm_page_t m);
void
vm_page_assert_unbusied(vm_page_t m);
void
vm_page_assert_xbusied(vm_page_t m);
In other situations, threads do not need to change the identity of the page but they want to prevent other threads from changing the identity themselves. For example, when a thread wants to access or update page contents without a lock held the page is shared busied.
Before busying a page the vm_object lock must be held. The same rule applies when a page is unbusied. This makes the vm_object lock a real busy interlock.
The vm_page_busied() function returns non-zero if the current thread busied m in either exclusive or shared mode. Returns zero otherwise.
The vm_page_busy_downgrade() function must be used to downgrade m from an exclusive busy state to a shared busy state.
The vm_page_busy_sleep() function puts the invoking thread to sleep using the appropriate waitchannels for the busy mechanism. The parameter msg is a string describing the sleep condition for userland tools.
The vm_page_busied() function returns non-zero if the current thread busied m in shared mode. Returns zero otherwise.
The vm_page_sbusy() function shared busies m.
The vm_page_sleep_if_busy() function puts the invoking thread to sleep, using the appropriate waitchannels for the busy mechanism, if m. is busied in either exclusive or shared mode. If the invoking thread slept a non-zero value is returned, otherwise 0 is returned. The parameter msg is a string describing the sleep condition for userland tools.
The vm_page_sunbusy() function shared unbusies m.
The vm_page_trysbusy() attempts to shared busy m. If the operation cannot immediately succeed vm_page_trysbusy() returns 0, otherwise a non-zero value is returned.
The vm_page_tryxbusy() attempts to exclusive busy m. If the operation cannot immediately succeed vm_page_tryxbusy() returns 0, otherwise a non-zero value is returned.
The vm_page_xbusied() function returns non-zero if the current thread busied m in exclusive mode. Returns zero otherwise.
The vm_page_xbusy() function exclusive busies m.
The vm_page_xunbusy() function exclusive unbusies m. Assertions on the busy state allow kernels compiled with options INVARIANTS and options INVARIANT_SUPPORT to panic if they are not respected.
The vm_page_assert_sbusied() function panics if m is not shared busied.
The vm_page_assert_unbusied() function panics if m is not unbusied.
The vm_page_assert_xbusied() function panics if m is not exclusive busied.
VM_PAGE_BUSY (9) | August 07, 2013 |
Main index | Section 9 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.