diff options
| author | yamt <yamt@NetBSD.org> | 2006-10-12 10:14:20 +0000 |
|---|---|---|
| committer | yamt <yamt@NetBSD.org> | 2006-10-12 10:14:20 +0000 |
| commit | 9de1cdc8fe7dd07fb614fa971b16a4e6fed2b6a6 (patch) | |
| tree | ce3f43b06bf6040425c5238956552668d8096516 /sys | |
| parent | b290489c817ffcf46ce4877327e98492e88b416a (diff) | |
move some knowledge about vnode into uvm_vnode.c.
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/uvm/uvm_bio.c | 5 | ||||
| -rw-r--r-- | sys/uvm/uvm_extern.h | 5 | ||||
| -rw-r--r-- | sys/uvm/uvm_fault.c | 5 | ||||
| -rw-r--r-- | sys/uvm/uvm_object.h | 13 | ||||
| -rw-r--r-- | sys/uvm/uvm_pdpolicy_clock.c | 5 | ||||
| -rw-r--r-- | sys/uvm/uvm_vnode.c | 29 |
6 files changed, 41 insertions, 21 deletions
diff --git a/sys/uvm/uvm_bio.c b/sys/uvm/uvm_bio.c index b211840c68e..76059ce0873 100644 --- a/sys/uvm/uvm_bio.c +++ b/sys/uvm/uvm_bio.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_bio.c,v 1.51 2006/10/12 01:32:52 christos Exp $ */ +/* $NetBSD: uvm_bio.c,v 1.52 2006/10/12 10:14:20 yamt Exp $ */ /* * Copyright (c) 1998 Chuck Silvers. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_bio.c,v 1.51 2006/10/12 01:32:52 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_bio.c,v 1.52 2006/10/12 10:14:20 yamt Exp $"); #include "opt_uvmhist.h" #include "opt_ubc.h" @@ -43,7 +43,6 @@ __KERNEL_RCSID(0, "$NetBSD: uvm_bio.c,v 1.51 2006/10/12 01:32:52 christos Exp $" #include <sys/systm.h> #include <sys/malloc.h> #include <sys/kernel.h> -#include <sys/vnode.h> #include <uvm/uvm.h> diff --git a/sys/uvm/uvm_extern.h b/sys/uvm/uvm_extern.h index 6a6daf0f718..2ac5b6968b5 100644 --- a/sys/uvm/uvm_extern.h +++ b/sys/uvm/uvm_extern.h @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_extern.h,v 1.120 2006/10/12 10:11:57 yamt Exp $ */ +/* $NetBSD: uvm_extern.h,v 1.121 2006/10/12 10:14:20 yamt Exp $ */ /* * @@ -705,6 +705,9 @@ struct uvm_object *uvn_attach(void *, vm_prot_t); int uvn_findpages(struct uvm_object *, voff_t, int *, struct vm_page **, int); void uvm_vnp_zerorange(struct vnode *, off_t, size_t); +boolean_t uvn_text_p(struct uvm_object *); +boolean_t uvn_clean_p(struct uvm_object *); +boolean_t uvn_needs_writefault_p(struct uvm_object *); /* kern_malloc.c */ void kmeminit_nkmempages(void); diff --git a/sys/uvm/uvm_fault.c b/sys/uvm/uvm_fault.c index b3e327b2d2c..9f641d68c25 100644 --- a/sys/uvm/uvm_fault.c +++ b/sys/uvm/uvm_fault.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_fault.c,v 1.113 2006/10/03 18:26:03 christos Exp $ */ +/* $NetBSD: uvm_fault.c,v 1.114 2006/10/12 10:14:20 yamt Exp $ */ /* * @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.113 2006/10/03 18:26:03 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.114 2006/10/12 10:14:20 yamt Exp $"); #include "opt_uvmhist.h" @@ -50,7 +50,6 @@ __KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.113 2006/10/03 18:26:03 christos Exp #include <sys/malloc.h> #include <sys/mman.h> #include <sys/user.h> -#include <sys/vnode.h> #include <uvm/uvm.h> diff --git a/sys/uvm/uvm_object.h b/sys/uvm/uvm_object.h index 2d860c7fb67..0d4e5464e97 100644 --- a/sys/uvm/uvm_object.h +++ b/sys/uvm/uvm_object.h @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_object.h,v 1.21 2005/12/11 12:25:29 christos Exp $ */ +/* $NetBSD: uvm_object.h,v 1.22 2006/10/12 10:14:20 yamt Exp $ */ /* * @@ -84,12 +84,10 @@ extern struct uvm_pagerops aobj_pager; ((uobj)->pgops == &uvm_deviceops) #define UVM_OBJ_IS_VTEXT(uobj) \ - ((uobj)->pgops == &uvm_vnodeops && \ - ((struct vnode *)uobj)->v_flag & VEXECMAP) + (UVM_OBJ_IS_VNODE(uobj) && uvn_text_p(uobj)) #define UVM_OBJ_IS_CLEAN(uobj) \ - (UVM_OBJ_IS_VNODE(uobj) && \ - (((struct vnode *)uobj)->v_flag & VONWORKLST) == 0) + (UVM_OBJ_IS_VNODE(uobj) && uvn_clean_p(uobj)) /* * UVM_OBJ_NEEDS_WRITEFAULT: true if the uobj needs to detect modification. @@ -99,10 +97,7 @@ extern struct uvm_pagerops aobj_pager; */ #define UVM_OBJ_NEEDS_WRITEFAULT(uobj) \ - (UVM_OBJ_IS_VNODE(uobj) && \ - ((((struct vnode *)uobj)->v_flag & VONWORKLST) == 0 || \ - (((struct vnode *)uobj)->v_flag & (VWRITEMAP|VWRITEMAPDIRTY)) \ - == VWRITEMAP)) + (UVM_OBJ_IS_VNODE(uobj) && uvn_needs_writefault_p(uobj)) #define UVM_OBJ_IS_AOBJ(uobj) \ ((uobj)->pgops == &aobj_pager) diff --git a/sys/uvm/uvm_pdpolicy_clock.c b/sys/uvm/uvm_pdpolicy_clock.c index a8a1efa5bb0..4e5c0717ebd 100644 --- a/sys/uvm/uvm_pdpolicy_clock.c +++ b/sys/uvm/uvm_pdpolicy_clock.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_pdpolicy_clock.c,v 1.3 2006/10/12 01:32:54 christos Exp $ */ +/* $NetBSD: uvm_pdpolicy_clock.c,v 1.4 2006/10/12 10:14:20 yamt Exp $ */ /* NetBSD: uvm_pdaemon.c,v 1.72 2006/01/05 10:47:33 yamt Exp $ */ /* @@ -74,13 +74,12 @@ #else /* defined(PDSIM) */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.3 2006/10/12 01:32:54 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.4 2006/10/12 10:14:20 yamt Exp $"); #include <sys/param.h> #include <sys/proc.h> #include <sys/systm.h> #include <sys/kernel.h> -#include <sys/vnode.h> #include <uvm/uvm.h> #include <uvm/uvm_pdpolicy.h> diff --git a/sys/uvm/uvm_vnode.c b/sys/uvm/uvm_vnode.c index 6b0fc37aad2..23cbf138a3a 100644 --- a/sys/uvm/uvm_vnode.c +++ b/sys/uvm/uvm_vnode.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_vnode.c,v 1.74 2006/10/12 01:32:54 christos Exp $ */ +/* $NetBSD: uvm_vnode.c,v 1.75 2006/10/12 10:14:20 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_vnode.c,v 1.74 2006/10/12 01:32:54 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_vnode.c,v 1.75 2006/10/12 10:14:20 yamt Exp $"); #include "fs_nfs.h" #include "opt_uvmhist.h" @@ -501,3 +501,28 @@ uvm_vnp_zerorange(struct vnode *vp, off_t off, size_t len) len -= bytelen; } } + +boolean_t +uvn_text_p(struct uvm_object *uobj) +{ + struct vnode *vp = (struct vnode *)uobj; + + return (vp->v_flag & VEXECMAP) != 0; +} + +boolean_t +uvn_clean_p(struct uvm_object *uobj) +{ + struct vnode *vp = (struct vnode *)uobj; + + return (vp->v_flag & VONWORKLST) == 0; +} + +boolean_t +uvn_needs_writefault_p(struct uvm_object *uobj) +{ + struct vnode *vp = (struct vnode *)uobj; + + return uvn_clean_p(uobj) || + (vp->v_flag & (VWRITEMAP|VWRITEMAPDIRTY)) == VWRITEMAP; +} |
