Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_page.h
Show First 20 Lines • Show All 766 Lines • ▼ Show 20 Lines | |||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
void vm_page_object_busy_assert(vm_page_t m); | void vm_page_object_busy_assert(vm_page_t m); | ||||
#define VM_PAGE_OBJECT_BUSY_ASSERT(m) vm_page_object_busy_assert(m) | #define VM_PAGE_OBJECT_BUSY_ASSERT(m) vm_page_object_busy_assert(m) | ||||
void vm_page_assert_pga_writeable(vm_page_t m, uint16_t bits); | void vm_page_assert_pga_writeable(vm_page_t m, uint16_t bits); | ||||
#define VM_PAGE_ASSERT_PGA_WRITEABLE(m, bits) \ | #define VM_PAGE_ASSERT_PGA_WRITEABLE(m, bits) \ | ||||
vm_page_assert_pga_writeable(m, bits) | vm_page_assert_pga_writeable(m, bits) | ||||
#define vm_page_xbusy_claim(m) do { \ | #define vm_page_xbusy_claim(m) do { \ | ||||
u_int busy_lock; \ | |||||
\ | |||||
vm_page_assert_xbusied_unchecked((m)); \ | vm_page_assert_xbusied_unchecked((m)); \ | ||||
(m)->busy_lock = VPB_CURTHREAD_EXCLUSIVE; \ | do { \ | ||||
busy_lock = atomic_load_int(&(m)->busy_lock); \ | |||||
} while (!atomic_cmpset_int(&(m)->busy_lock, busy_lock, \ | |||||
(busy_lock & VPB_BIT_FLAGMASK) | VPB_CURTHREAD_EXCLUSIVE)); \ | |||||
} while (0) | } while (0) | ||||
#else | #else | ||||
#define VM_PAGE_OBJECT_BUSY_ASSERT(m) (void)0 | #define VM_PAGE_OBJECT_BUSY_ASSERT(m) (void)0 | ||||
#define VM_PAGE_ASSERT_PGA_WRITEABLE(m, bits) (void)0 | #define VM_PAGE_ASSERT_PGA_WRITEABLE(m, bits) (void)0 | ||||
#define vm_page_xbusy_claim(m) | #define vm_page_xbusy_claim(m) | ||||
#endif | #endif | ||||
#if BYTE_ORDER == BIG_ENDIAN | #if BYTE_ORDER == BIG_ENDIAN | ||||
▲ Show 20 Lines • Show All 203 Lines • Show Last 20 Lines |