diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -215,6 +215,7 @@ } vm_page_astate_t; struct vm_page { + vm_pindex_t pindex; /* offset into object (O,P) */ union { TAILQ_ENTRY(vm_page) q; /* page queue or free list (Q) */ struct { @@ -229,12 +230,17 @@ void *zone; } uma; } plinks; + u_int ref_count; /* page references (A) */ + u_int busy_lock; /* busy owners lock (A) */ + /* + * Fields before this are available for use by the consumer when + * allocating noobj pages. The ref_count field must be restored + * before the page can be freed. + */ +#define vm_page_end_opaque object vm_object_t object; /* which object am I in (O) */ - vm_pindex_t pindex; /* offset into object (O,P) */ vm_paddr_t phys_addr; /* physical address of page (C) */ struct md_page md; /* machine dependent stuff */ - u_int ref_count; /* page references (A) */ - u_int busy_lock; /* busy owners lock (A) */ union vm_page_astate a; /* state accessed atomically (A) */ uint8_t order; /* index of the buddy queue (F) */ uint8_t pool; /* vm_phys freepool index (F) */