mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Introduce a helper function vm_page_find_least(). Use it in several places,
which inline the function. Reviewed by: alc Tested by: pho MFC after: 1 week
This commit is contained in:
parent
3d36ac9877
commit
b382c10a57
4 changed files with 29 additions and 21 deletions
|
|
@ -1750,13 +1750,7 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot,
|
|||
start = 0;
|
||||
p_start = NULL;
|
||||
|
||||
if ((p = TAILQ_FIRST(&object->memq)) != NULL) {
|
||||
if (p->pindex < pindex) {
|
||||
p = vm_page_splay(pindex, object->root);
|
||||
if ((object->root = p)->pindex < pindex)
|
||||
p = TAILQ_NEXT(p, listq);
|
||||
}
|
||||
}
|
||||
p = vm_page_find_least(object, pindex);
|
||||
/*
|
||||
* Assert: the variable p is either (1) the page with the
|
||||
* least pindex greater than or equal to the parameter pindex
|
||||
|
|
|
|||
|
|
@ -1400,13 +1400,7 @@ vm_object_split(vm_map_entry_t entry)
|
|||
orig_object->charge -= ptoa(size);
|
||||
}
|
||||
retry:
|
||||
if ((m = TAILQ_FIRST(&orig_object->memq)) != NULL) {
|
||||
if (m->pindex < offidxstart) {
|
||||
m = vm_page_splay(offidxstart, orig_object->root);
|
||||
if ((orig_object->root = m)->pindex < offidxstart)
|
||||
m = TAILQ_NEXT(m, listq);
|
||||
}
|
||||
}
|
||||
m = vm_page_find_least(orig_object, offidxstart);
|
||||
for (; m != NULL && (idx = m->pindex - offidxstart) < size;
|
||||
m = m_next) {
|
||||
m_next = TAILQ_NEXT(m, listq);
|
||||
|
|
@ -1910,13 +1904,7 @@ vm_object_page_remove(vm_object_t object, vm_pindex_t start, vm_pindex_t end,
|
|||
|
||||
vm_object_pip_add(object, 1);
|
||||
again:
|
||||
if ((p = TAILQ_FIRST(&object->memq)) != NULL) {
|
||||
if (p->pindex < start) {
|
||||
p = vm_page_splay(start, object->root);
|
||||
if ((object->root = p)->pindex < start)
|
||||
p = TAILQ_NEXT(p, listq);
|
||||
}
|
||||
}
|
||||
p = vm_page_find_least(object, start);
|
||||
|
||||
/*
|
||||
* Assert: the variable p is either (1) the page with the
|
||||
|
|
|
|||
|
|
@ -878,6 +878,31 @@ vm_page_lookup(vm_object_t object, vm_pindex_t pindex)
|
|||
return (m);
|
||||
}
|
||||
|
||||
/*
|
||||
* vm_page_find_least:
|
||||
*
|
||||
* Returns the page associated with the object with least pindex
|
||||
* greater than or equal to the parameter pindex, or NULL.
|
||||
*
|
||||
* The object must be locked.
|
||||
* The routine may not block.
|
||||
*/
|
||||
vm_page_t
|
||||
vm_page_find_least(vm_object_t object, vm_pindex_t pindex)
|
||||
{
|
||||
vm_page_t m;
|
||||
|
||||
VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
|
||||
if ((m = TAILQ_FIRST(&object->memq)) != NULL) {
|
||||
if (m->pindex < pindex) {
|
||||
m = vm_page_splay(pindex, object->root);
|
||||
if ((object->root = m)->pindex < pindex)
|
||||
m = TAILQ_NEXT(m, listq);
|
||||
}
|
||||
}
|
||||
return (m);
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the given page's successor (by pindex) within the object if it is
|
||||
* resident; if none is found, NULL is returned.
|
||||
|
|
|
|||
|
|
@ -345,6 +345,7 @@ int vm_page_try_to_cache (vm_page_t);
|
|||
int vm_page_try_to_free (vm_page_t);
|
||||
void vm_page_dontneed(vm_page_t);
|
||||
void vm_page_deactivate (vm_page_t);
|
||||
vm_page_t vm_page_find_least(vm_object_t, vm_pindex_t);
|
||||
void vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t);
|
||||
vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t);
|
||||
vm_page_t vm_page_next(vm_page_t m);
|
||||
|
|
|
|||
Loading…
Reference in a new issue