Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_map.c
Show First 20 Lines • Show All 991 Lines • ▼ Show 20 Lines | |||||
for (; | for (; | ||||
p != NULL && (tmpidx = p->pindex - pindex) < psize; | p != NULL && (tmpidx = p->pindex - pindex) < psize; | ||||
p = TAILQ_NEXT(p, listq)) { | p = TAILQ_NEXT(p, listq)) { | ||||
/* | /* | ||||
* don't allow an madvise to blow away our really | * don't allow an madvise to blow away our really | ||||
* free pages allocating pv entries. | * free pages allocating pv entries. | ||||
*/ | */ | ||||
if (((flags & MAP_PREFAULT_MADVISE) != 0 && | if (((flags & MAP_PREFAULT_MADVISE) != 0 && | ||||
vm_cnt.v_free_count < vm_cnt.v_free_reserved) || | vm_page_count_severe()) || | ||||
((flags & MAP_PREFAULT_PARTIAL) != 0 && | ((flags & MAP_PREFAULT_PARTIAL) != 0 && | ||||
tmpidx >= threshold)) { | tmpidx >= threshold)) { | ||||
psize = tmpidx; | psize = tmpidx; | ||||
break; | break; | ||||
} | } | ||||
if (p->valid == VM_PAGE_BITS_ALL) { | if (p->valid == VM_PAGE_BITS_ALL) { | ||||
if (p_start == NULL) { | if (p_start == NULL) { | ||||
start = addr + ptoa(tmpidx); | start = addr + ptoa(tmpidx); | ||||
▲ Show 20 Lines • Show All 991 Lines • Show Last 20 Lines |