summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2013-02-06 14:50:34 +0000
committerattilio <attilio@FreeBSD.org>2013-02-06 14:50:34 +0000
commit9d88c5279c7cb30922a3370e680f7cb67cd3b7d0 (patch)
tree1d3acdb88e18f4fe03323f9b9ea67068ab126d82
parent44f85cd1a56371dc6f7f850335babfad7495ff1c (diff)
downloadFreeBSD-src-9d88c5279c7cb30922a3370e680f7cb67cd3b7d0.zip
FreeBSD-src-9d88c5279c7cb30922a3370e680f7cb67cd3b7d0.tar.gz
Now that vm_page_cache_free() and vm_page_cache_transfer() are
reimplemented as ranged operations, sync vm_page_is_cached() semantic with HEAD.
-rw-r--r--sys/vm/vm_page.c10
-rw-r--r--sys/vm/vm_page.h2
2 files changed, 7 insertions, 5 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 02c7de1..742d741 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -1117,12 +1117,12 @@ vm_page_cache_transfer(vm_object_t orig_object, vm_pindex_t offidxstart,
}
/*
- * Returns a pointer to the cached page associated with the given object
- * and offset, NULL otherwise.
+ * Returns TRUE if a cached page is associated with the given object and
+ * offset, and FALSE otherwise.
*
* The object must be locked.
*/
-vm_page_t
+boolean_t
vm_page_is_cached(vm_object_t object, vm_pindex_t pindex)
{
vm_page_t m;
@@ -1135,10 +1135,12 @@ vm_page_is_cached(vm_object_t object, vm_pindex_t pindex)
* exist.
*/
VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+ if (vm_object_cache_is_empty(object))
+ return (FALSE);
mtx_lock(&vm_page_queue_free_mtx);
m = vm_page_cache_lookup(object, pindex);
mtx_unlock(&vm_page_queue_free_mtx);
- return (m);
+ return (m != NULL);
}
/*
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
index 6e0141e..d2393dc 100644
--- a/sys/vm/vm_page.h
+++ b/sys/vm/vm_page.h
@@ -388,7 +388,7 @@ vm_page_t vm_page_find_least(vm_object_t, vm_pindex_t);
vm_page_t vm_page_getfake(vm_paddr_t paddr, vm_memattr_t memattr);
void vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr);
void vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t);
-vm_page_t vm_page_is_cached(vm_object_t object, vm_pindex_t pindex);
+boolean_t vm_page_is_cached(vm_object_t object, vm_pindex_t pindex);
vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t);
vm_page_t vm_page_next(vm_page_t m);
int vm_page_pa_tryrelock(pmap_t, vm_paddr_t, vm_paddr_t *);
OpenPOWER on IntegriCloud