diff options
Diffstat (limited to 'sys/uvm/uvm_page.h')
-rw-r--r-- | sys/uvm/uvm_page.h | 65 |
1 files changed, 25 insertions, 40 deletions
diff --git a/sys/uvm/uvm_page.h b/sys/uvm/uvm_page.h index 45b26021f3e..d1f531cbff4 100644 --- a/sys/uvm/uvm_page.h +++ b/sys/uvm/uvm_page.h @@ -1,9 +1,9 @@ -/* $OpenBSD: uvm_page.h,v 1.16 2001/12/04 23:22:42 art Exp $ */ -/* $NetBSD: uvm_page.h,v 1.30 2001/07/25 23:05:04 thorpej Exp $ */ +/* $OpenBSD: uvm_page.h,v 1.17 2001/12/19 08:58:07 art Exp $ */ +/* $NetBSD: uvm_page.h,v 1.19 2000/12/28 08:24:55 chs Exp $ */ -/* +/* * Copyright (c) 1997 Charles D. Cranor and Washington University. - * Copyright (c) 1991, 1993, The Regents of the University of California. + * Copyright (c) 1991, 1993, The Regents of the University of California. * * All rights reserved. * @@ -21,7 +21,7 @@ * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by Charles D. Cranor, - * Washington University, the University of California, Berkeley and + * Washington University, the University of California, Berkeley and * its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software @@ -45,17 +45,17 @@ * * Copyright (c) 1987, 1990 Carnegie-Mellon University. * All rights reserved. - * + * * Permission to use, copy, modify and distribute this software and * its documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND + * + * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * + * * Carnegie Mellon requests users of this software to return to * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU @@ -110,7 +110,7 @@ * fields were dumped and all the flags were lumped into one short. * that is fine for a single threaded uniprocessor OS, but bad if you * want to actual make use of locking (simple_lock's). so, we've - * separated things back out again. + * seperated things back out again. * * note the page structure has no lock of its own. */ @@ -128,22 +128,14 @@ struct vm_page { struct uvm_object *uobject; /* object (O,P) */ voff_t offset; /* offset into object (O,P) */ - u_int flags: 16, /* object flags [O] */ - version: 16; /* version count [O] */ - - u_int wire_count: 16, /* wired down map refs [P] */ - pqflags: 8, /* page queue flags [P] */ - : 8; - + u_short flags; /* object flags [O] */ + u_short version; /* version count [O] */ + u_short wire_count; /* wired down map refs [P] */ + u_short pqflags; /* page queue flags [P] */ u_int loan_count; /* number of active loans * to read: [O or P] * to modify: [O _and_ P] */ paddr_t phys_addr; /* physical address of page */ - -#ifdef __HAVE_VM_PAGE_MD - struct vm_page_md mdpage; /* pmap-specific data */ -#endif - #if defined(UVM_PAGE_TRKOWN) /* debugging fields to track page ownership */ pid_t owner; /* proc that set PG_BUSY */ @@ -153,12 +145,14 @@ struct vm_page { /* * These are the flags defined for vm_page. + * + * Note: PG_FILLED and PG_DIRTY are added for the filesystems. */ /* * locking rules: * PG_ ==> locked by object lock - * PQ_ ==> lock by page queue lock + * PQ_ ==> lock by page queue lock * PQ_FREE is locked by free queue lock and is mutex with all other PQs * * PG_ZERO is used to indicate that a page has been pre-zero'd. This flag @@ -178,12 +172,12 @@ struct vm_page { #define PG_PAGER1 0x1000 /* pager-specific flag */ -#define PQ_FREE 0x01 /* page is on free list */ -#define PQ_INACTIVE 0x02 /* page is in inactive list */ -#define PQ_ACTIVE 0x04 /* page is in active list */ -#define PQ_ANON 0x10 /* page is part of an anon, rather +#define PQ_FREE 0x0001 /* page is on free list */ +#define PQ_INACTIVE 0x0002 /* page is in inactive list */ +#define PQ_ACTIVE 0x0004 /* page is in active list */ +#define PQ_ANON 0x0010 /* page is part of an anon, rather than an uvm_object */ -#define PQ_AOBJ 0x20 /* page is part of an anonymous +#define PQ_AOBJ 0x0020 /* page is part of an anonymous uvm_object */ #define PQ_SWAPBACKED (PQ_ANON|PQ_AOBJ) #define PQ_ENCRYPT 0x0040 /* page needs {en,de}cryption */ @@ -216,9 +210,7 @@ struct vm_physseg { int free_list; /* which free list they belong on */ struct vm_page *pgs; /* vm_page structures (from start) */ struct vm_page *lastpg; /* vm_page structure for end */ -#ifdef __HAVE_PMAP_PHYSSEG struct pmap_physseg pmseg; /* pmap specific (MD) data */ -#endif }; #ifdef _KERNEL @@ -232,7 +224,7 @@ extern boolean_t vm_page_zero_enable; /* * Each pageable resident page falls into one of three lists: * - * free + * free * Available for allocation now. * inactive * Not referenced in any map, but still has an @@ -262,7 +254,7 @@ extern int vm_nphysseg; #ifdef UVM_PAGE_INLINE #define PAGE_INLINE static __inline -#else +#else #define PAGE_INLINE /* nothing */ #endif /* UVM_PAGE_INLINE */ @@ -278,7 +270,6 @@ void uvm_page_own __P((struct vm_page *, char *)); boolean_t uvm_page_physget __P((paddr_t *)); #endif void uvm_page_rehash __P((void)); -void uvm_page_recolor __P((int)); void uvm_pageidlezero __P((void)); PAGE_INLINE int uvm_lock_fpageq __P((void)); @@ -317,12 +308,6 @@ static int vm_physseg_find __P((paddr_t, int *)); #define VM_PAGE_TO_PHYS(entry) ((entry)->phys_addr) /* - * Compute the page color bucket for a given page. - */ -#define VM_PGCOLOR_BUCKET(pg) \ - (atop(VM_PAGE_TO_PHYS((pg))) & uvmexp.colormask) - -/* * when VM_PHYSSEG_MAX is 1, we can simplify these functions */ |