MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vm_reserv_from_object

Function vm_reserv_from_object

freebsd/vm/vm_reserv.c:519–551  ·  view source on GitHub ↗

* Returns an existing reservation or NULL and initialized successor pointer. */

Source from the content-addressed store, hash-verified

517 * Returns an existing reservation or NULL and initialized successor pointer.
518 */
519static vm_reserv_t
520vm_reserv_from_object(vm_object_t object, vm_pindex_t pindex,
521 vm_page_t mpred, vm_page_t *msuccp)
522{
523 vm_reserv_t rv;
524 vm_page_t msucc;
525
526 msucc = NULL;
527 if (mpred != NULL) {
528 KASSERT(mpred->object == object,
529 ("vm_reserv_from_object: object doesn't contain mpred"));
530 KASSERT(mpred->pindex < pindex,
531 ("vm_reserv_from_object: mpred doesn't precede pindex"));
532 rv = vm_reserv_from_page(mpred);
533 if (rv->object == object && vm_reserv_has_pindex(rv, pindex))
534 goto found;
535 msucc = TAILQ_NEXT(mpred, listq);
536 } else
537 msucc = TAILQ_FIRST(&object->memq);
538 if (msucc != NULL) {
539 KASSERT(msucc->pindex > pindex,
540 ("vm_reserv_from_object: msucc doesn't succeed pindex"));
541 rv = vm_reserv_from_page(msucc);
542 if (rv->object == object && vm_reserv_has_pindex(rv, pindex))
543 goto found;
544 }
545 rv = NULL;
546
547found:
548 *msuccp = msucc;
549
550 return (rv);
551}
552
553/*
554 * Returns TRUE if the given reservation contains the given page index and

Callers 2

vm_reserv_alloc_contigFunction · 0.85
vm_reserv_alloc_pageFunction · 0.85

Calls 2

vm_reserv_from_pageFunction · 0.85
vm_reserv_has_pindexFunction · 0.85

Tested by

no test coverage detected