Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_page.h
Show First 20 Lines • Show All 625 Lines • ▼ Show 20 Lines | |||||
void vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr); | void vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr); | ||||
int vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t); | int vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t); | ||||
void vm_page_invalid(vm_page_t m); | void vm_page_invalid(vm_page_t m); | ||||
void vm_page_launder(vm_page_t m); | void vm_page_launder(vm_page_t m); | ||||
vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t); | vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t); | ||||
vm_page_t vm_page_next(vm_page_t m); | vm_page_t vm_page_next(vm_page_t m); | ||||
void vm_page_pqbatch_drain(void); | void vm_page_pqbatch_drain(void); | ||||
void vm_page_pqbatch_submit(vm_page_t m, uint8_t queue); | void vm_page_pqbatch_submit(vm_page_t m, uint8_t queue); | ||||
bool vm_page_pqstate_commit(vm_page_t m, vm_page_astate_t *old, | |||||
vm_page_astate_t new); | |||||
vm_page_t vm_page_prev(vm_page_t m); | vm_page_t vm_page_prev(vm_page_t m); | ||||
bool vm_page_ps_test(vm_page_t m, int flags, vm_page_t skip_m); | bool vm_page_ps_test(vm_page_t m, int flags, vm_page_t skip_m); | ||||
void vm_page_putfake(vm_page_t m); | void vm_page_putfake(vm_page_t m); | ||||
void vm_page_readahead_finish(vm_page_t m); | void vm_page_readahead_finish(vm_page_t m); | ||||
bool vm_page_reclaim_contig(int req, u_long npages, vm_paddr_t low, | bool vm_page_reclaim_contig(int req, u_long npages, vm_paddr_t low, | ||||
vm_paddr_t high, u_long alignment, vm_paddr_t boundary); | vm_paddr_t high, u_long alignment, vm_paddr_t boundary); | ||||
bool vm_page_reclaim_contig_domain(int domain, int req, u_long npages, | bool vm_page_reclaim_contig_domain(int domain, int req, u_long npages, | ||||
vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary); | vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary); | ||||
▲ Show 20 Lines • Show All 254 Lines • ▼ Show 20 Lines | |||||
static __inline void | static __inline void | ||||
vm_page_undirty(vm_page_t m) | vm_page_undirty(vm_page_t m) | ||||
{ | { | ||||
VM_PAGE_OBJECT_BUSY_ASSERT(m); | VM_PAGE_OBJECT_BUSY_ASSERT(m); | ||||
m->dirty = 0; | m->dirty = 0; | ||||
} | } | ||||
static inline uint8_t | |||||
_vm_page_queue(vm_page_astate_t as) | |||||
{ | |||||
if ((as.flags & PGA_DEQUEUE) != 0) | |||||
return (PQ_NONE); | |||||
return (as.queue); | |||||
} | |||||
/* | /* | ||||
* vm_page_queue: | * vm_page_queue: | ||||
* | * | ||||
* Return the index of the queue containing m. This index is guaranteed | * Return the index of the queue containing m. | ||||
* not to change while the page lock is held. | |||||
*/ | */ | ||||
static inline uint8_t | static inline uint8_t | ||||
vm_page_queue(vm_page_t m) | vm_page_queue(vm_page_t m) | ||||
{ | { | ||||
vm_page_assert_locked(m); | vm_page_assert_locked(m); | ||||
if ((m->a.flags & PGA_DEQUEUE) != 0) | return (_vm_page_queue(vm_page_astate_load(m))); | ||||
return (PQ_NONE); | |||||
atomic_thread_fence_acq(); | |||||
return (m->a.queue); | |||||
} | } | ||||
static inline bool | static inline bool | ||||
vm_page_active(vm_page_t m) | vm_page_active(vm_page_t m) | ||||
{ | { | ||||
return (vm_page_queue(m) == PQ_ACTIVE); | return (vm_page_queue(m) == PQ_ACTIVE); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines |