Home | History | Annotate | Download | only in uvm

Lines Matching refs:uobj

65  * uobj | d/c |       | d/c |                   |  V  |     +----+  |
71 * no amap or uobj is present. this is an error.
75 * I/O takes place in upper level anon and uobj is not touched.
79 * case [2]: lower layer fault [uobj]
80 * 2A: [read on non-NULL uobj] or [write to non-copy_on_write area]
82 * 2B: [write to copy_on_write] or [read on NULL uobj]
83 * data is "promoted" from uobj to a new anon.
84 * if uobj is null, then we zero fill.
88 * MAPS => AMAP => UOBJ => ANON => PAGE QUEUES (PQ)
111 * - ensure source page is resident (if uobj)
113 * fill if uobj == NULL)
340 UVMHIST_LOG(maphist, " unlock+wait on uobj",0,
553 struct uvm_object *uobj;
574 uobj = opg->uobject;
576 uobj = NULL;
583 KASSERT(uobj == NULL || rw_lock_held(uobj->vmobjlock));
622 uvmfault_unlockall(ufi, amap, uobj);
912 struct uvm_object * const uobj =
915 if (uobj && uobj->pgops->pgo_fault != NULL) {
919 rw_enter(uobj->vmobjlock, RW_WRITER);
920 /* locked: maps(read), amap(if there), uobj */
921 error = uobj->pgops->pgo_fault(&ufi,
982 struct uvm_object *uobj;
1085 uobj = ufi->entry->object.uvm_obj; /* lower layer */
1092 if (amap == NULL && uobj == NULL) {
1103 if (uobj != NULL && amap != NULL &&
1152 (uintptr_t)ufi->entry, (uintptr_t)amap, (uintptr_t)uobj, 0);
1210 if (uobj) {
1215 rw_enter(uobj->vmobjlock, RW_WRITER);
1216 (void) (uobj->pgops->pgo_put)(uobj, uoff, uoff +
1243 struct vm_amap *amap, struct uvm_object *uobj)
1266 uvmfault_unlockall(ufi, amap, uobj);
1427 struct uvm_object *uobj;
1482 * uobj is non null if the page is on loan from an object (i.e. uobj)
1485 uobj = anon->an_page->uobject; /* locked by anonget if !NULL */
1487 /* locked: maps(read), amap, anon, uobj(if one) */
1490 KASSERT(uobj == NULL ||
1491 rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
1498 error = uvm_fault_upper_loan(ufi, flt, anon, &uobj);
1518 error = uvm_fault_upper_promote(ufi, flt, uobj, anon);
1520 error = uvm_fault_upper_direct(ufi, flt, uobj, anon);
1579 /* if we were a loan receiver uobj is gone */
1599 struct uvm_object *uobj, struct vm_anon *anon)
1643 return uvm_fault_upper_enter(ufi, flt, uobj, anon, pg, oanon);
1653 struct uvm_object *uobj, struct vm_anon *anon)
1664 return uvm_fault_upper_enter(ufi, flt, uobj, anon, pg, oanon);
1674 struct uvm_object *uobj, struct vm_anon *anon, struct vm_page *pg,
1686 KASSERT(uobj == NULL ||
1687 rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
1736 uvmfault_unlockall(ufi, amap, uobj);
1755 uvmfault_unlockall(ufi, amap, uobj);
1808 struct vm_amap *amap, struct uvm_object *uobj, struct vm_page *uobjpage)
1813 KASSERT(uobj != NULL);
1814 KASSERT(flt->lower_lock_type == rw_lock_op(uobj->vmobjlock));
1831 if (__predict_false(!rw_tryupgrade(uobj->vmobjlock))) {
1832 uvmfault_unlockall(ufi, amap, uobj);
1838 KASSERT(flt->lower_lock_type == rw_lock_op(uobj->vmobjlock));
1845 * 1. check uobj
1851 * 3. if uobj is not ZFOD and page is not found, do i/o.
1861 struct uvm_object *uobj = ufi->entry->object.uvm_obj;
1874 if (uobj == NULL) {
1887 * not touched it yet). if we have faulted on the bottom (uobj)
1895 * maps(read), amap(if there), uobj(if !null), uobjpage(if !null)
1899 KASSERT(uobj == NULL ||
1900 rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
1909 if (uobj == NULL) {
1917 flt->promote, (uobj == NULL), 0,0);
1932 error = uvm_fault_lower_io(ufi, flt, &uobj, &uobjpage);
1939 * maps(read), amap(if !null), uobj(if !null), uobjpage(if uobj)
1943 KASSERT(uobj == NULL ||
1944 rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
1956 KASSERT(uobj == NULL ||
1957 uobjpage->uobject->vmobjlock == uobj->vmobjlock);
1958 KASSERT(uobj == NULL || !UVM_OBJ_IS_CLEAN(uobjpage->uobject) ||
1962 error = uvm_fault_lower_direct(ufi, flt, uobj, uobjpage);
1964 error = uvm_fault_lower_promote(ufi, flt, uobj, uobjpage);
1970 * uvm_fault_lower_lookup: look up on-memory uobj pages.
1982 struct uvm_object *uobj = ufi->entry->object.uvm_obj;
1988 rw_enter(uobj->vmobjlock, flt->lower_lock_type);
1991 * Locked: maps(read), amap(if there), uobj
1996 (void) uobj->pgops->pgo_get(uobj,
2002 KASSERT(rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
2028 KASSERT(curpg->uobject->vmobjlock == uobj->vmobjlock);
2061 /* locked: maps(read), amap(if there), uobj */
2121 struct uvm_object *uobj = *ruobj;
2136 /* Locked: maps(read), amap(if there), uobj */
2137 KASSERT(rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
2140 error = uvm_fault_lower_upgrade(ufi, flt, amap, uobj, NULL);
2149 /* Locked: uobj(write) */
2150 KASSERT(rw_write_held(uobj->vmobjlock));
2155 error = uobj->pgops->pgo_get(uobj, uoff, &pg, &gotpages,
2194 uobj = pg->uobject;
2196 rw_enter(uobj->vmobjlock, flt->lower_lock_type);
2204 /* locked(locked): maps(read), amap(if !null), uobj, pg */
2205 /* locked(!locked): uobj, pg */
2244 rw_exit(uobj->vmobjlock);
2253 /* locked: maps(read), amap(if !null), uobj */
2255 *ruobj = uobj;
2270 struct uvm_object *uobj, struct vm_page *uobjpage)
2298 uvm_fault_lower_direct_loan(ufi, flt, uobj, &pg, &uobjpage);
2302 return uvm_fault_lower_enter(ufi, flt, uobj, NULL, pg);
2315 struct uvm_object *uobj, struct vm_page **rpg,
2334 error = uvm_fault_lower_upgrade(ufi, flt, amap, uobj, uobjpage);
2338 KASSERT(rw_write_held(uobj->vmobjlock));
2343 uvmfault_unlockall(ufi, amap, uobj);
2379 struct uvm_object *uobj, struct vm_page *uobjpage)
2390 error = uvm_fault_upper_upgrade(ufi, flt, amap, uobj);
2395 KASSERT(uobj == NULL ||
2396 rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
2449 return uvm_fault_lower_enter(ufi, flt, uobj, anon, pg);
2460 struct uvm_object *uobj,
2471 * maps(read), amap(if !null), uobj(if !null),
2474 * anon must be write locked (promotion). uobj can be either.
2481 KASSERT(uobj == NULL ||
2482 rw_lock_op(uobj->vmobjlock) == flt->lower_lock_type);
2535 uvmfault_unlockall(ufi, amap, uobj);
2548 uvm_fault_lower_done(ufi, flt, uobj, pg);
2550 uvmfault_unlockall(ufi, amap, uobj);
2563 struct uvm_object *uobj, struct vm_page *pg)
2585 KASSERT(uobj != NULL);
2586 KASSERT(uobj->vmobjlock == pg->uobject->vmobjlock);