Changeset View
Changeset View
Standalone View
Standalone View
vm/vm_fault.c
Context not available. | |||||
{ | { | ||||
struct faultstate fs; | struct faultstate fs; | ||||
struct vnode *vp; | struct vnode *vp; | ||||
struct domainset *dset; | |||||
vm_object_t next_object, retry_object; | vm_object_t next_object, retry_object; | ||||
vm_offset_t e_end, e_start; | vm_offset_t e_end, e_start; | ||||
vm_pindex_t retry_pindex; | vm_pindex_t retry_pindex; | ||||
Context not available. | |||||
* there, and allocation can fail, causing | * there, and allocation can fail, causing | ||||
* restart and new reading of the p_flag. | * restart and new reading of the p_flag. | ||||
*/ | */ | ||||
if (!vm_page_count_severe() || P_KILLED(curproc)) { | dset = fs.object->domain.dr_policy; | ||||
if (dset == NULL) | |||||
dset = curthread->td_domain.dr_policy; | |||||
if (!vm_page_count_severe_set(&dset->ds_mask) || | |||||
P_KILLED(curproc)) { | |||||
#if VM_NRESERVLEVEL > 0 | #if VM_NRESERVLEVEL > 0 | ||||
vm_object_color(fs.object, atop(vaddr) - | vm_object_color(fs.object, atop(vaddr) - | ||||
fs.pindex); | fs.pindex); | ||||
Context not available. | |||||
} | } | ||||
if (fs.m == NULL) { | if (fs.m == NULL) { | ||||
unlock_and_deallocate(&fs); | unlock_and_deallocate(&fs); | ||||
vm_waitpfault(); | vm_waitpfault(dset); | ||||
goto RetryFault; | goto RetryFault; | ||||
} | } | ||||
} | } | ||||
Context not available. |