summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authoryamt <yamt@NetBSD.org>2006-10-12 10:14:20 +0000
committeryamt <yamt@NetBSD.org>2006-10-12 10:14:20 +0000
commit9de1cdc8fe7dd07fb614fa971b16a4e6fed2b6a6 (patch)
treece3f43b06bf6040425c5238956552668d8096516 /sys
parentb290489c817ffcf46ce4877327e98492e88b416a (diff)
move some knowledge about vnode into uvm_vnode.c.
Diffstat (limited to 'sys')
-rw-r--r--sys/uvm/uvm_bio.c5
-rw-r--r--sys/uvm/uvm_extern.h5
-rw-r--r--sys/uvm/uvm_fault.c5
-rw-r--r--sys/uvm/uvm_object.h13
-rw-r--r--sys/uvm/uvm_pdpolicy_clock.c5
-rw-r--r--sys/uvm/uvm_vnode.c29
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;
+}