Lines Matching defs:uobj
244 uao_find_swslot(struct uvm_object *uobj, int pageidx)
246 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
248 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
284 uao_set_swslot(struct uvm_object *uobj, int pageidx, int slot)
286 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
289 KASSERT(rw_write_held(uobj->vmobjlock) || uobj->uo_refs == 0);
290 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
300 printf("uao_set_swslot: uobj = %p\n", uobj);
358 struct uvm_object *uobj = &aobj->u_obj;
360 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
361 KASSERT(rw_write_held(uobj->vmobjlock));
362 uao_dropswap_range(uobj, 0, 0);
363 rw_exit(uobj->vmobjlock);
377 uvm_obj_destroy(uobj);
394 uao_shrink_flush(struct uvm_object *uobj, int startpg, int endpg)
397 KASSERT(uobj->uo_refs == 1);
398 uao_flush(uobj, (voff_t)startpg << PAGE_SHIFT,
400 uao_dropswap_range(uobj, startpg, endpg);
404 uao_shrink_hash(struct uvm_object *uobj, int pages)
406 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
419 uao_shrink_flush(uobj, pages, aobj->u_pages);
429 uao_shrink_flush(uobj, pages, aobj->u_pages);
453 uao_shrink_convert(struct uvm_object *uobj, int pages)
455 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
464 uao_shrink_flush(uobj, pages, aobj->u_pages);
489 uao_shrink_array(struct uvm_object *uobj, int pages)
491 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
499 uao_shrink_flush(uobj, pages, aobj->u_pages);
513 uao_shrink(struct uvm_object *uobj, int pages)
515 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
526 return uao_shrink_hash(uobj, pages); /* case 3 */
528 return uao_shrink_convert(uobj, pages); /* case 1 */
530 return uao_shrink_array(uobj, pages); /* case 2 */
542 uao_grow_array(struct uvm_object *uobj, int pages)
544 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
566 uao_grow_hash(struct uvm_object *uobj, int pages)
568 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
610 uao_grow_convert(struct uvm_object *uobj, int pages)
612 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
643 uao_grow(struct uvm_object *uobj, int pages)
645 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
656 return uao_grow_array(uobj, pages); /* case 2 */
658 return uao_grow_hash(uobj, pages); /* case 1 */
660 return uao_grow_convert(uobj, pages);
788 uao_reference(struct uvm_object *uobj)
791 if (UVM_OBJ_IS_KERN_OBJECT(uobj))
794 atomic_inc_int(&uobj->uo_refs);
802 uao_detach(struct uvm_object *uobj)
804 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
810 if (UVM_OBJ_IS_KERN_OBJECT(uobj))
816 if (atomic_dec_int_nv(&uobj->uo_refs) > 0) {
833 rw_enter(uobj->vmobjlock, RW_WRITE);
834 while ((pg = RBT_ROOT(uvm_objtree, &uobj->memt)) != NULL) {
837 uvm_pagewait(pg, uobj->vmobjlock, "uao_det");
838 rw_enter(uobj->vmobjlock, RW_WRITE);
867 uao_flush(struct uvm_object *uobj, voff_t start, voff_t stop, int flags)
869 struct uvm_aobj *aobj = (struct uvm_aobj *) uobj;
873 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
874 KASSERT(rw_write_held(uobj->vmobjlock));
900 pg = uvm_pagelookup(uobj, curoff);
910 uvm_pagewait(pg, uobj->vmobjlock, "uaoflsh");
911 rw_enter(uobj->vmobjlock, RW_WRITE);
942 if (uobj->uo_refs > 1)
959 uao_dropswap(uobj, pg->offset >> PAGE_SHIFT);
991 uao_get(struct uvm_object *uobj, voff_t offset, struct vm_page **pps,
994 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
1000 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
1001 KASSERT(rw_lock_held(uobj->vmobjlock));
1002 KASSERT(rw_write_held(uobj->vmobjlock) ||
1026 ptmp = uvm_pagelookup(uobj, current_offset);
1089 ptmp = uvm_pagelookup(uobj, current_offset);
1094 ptmp = uvm_pagealloc(uobj, current_offset,
1099 rw_exit(uobj->vmobjlock);
1101 rw_enter(uobj->vmobjlock, RW_WRITE);
1121 uvm_pagewait(ptmp, uobj->vmobjlock, "uao_get");
1122 rw_enter(uobj->vmobjlock, RW_WRITE);
1147 swslot = uao_find_swslot(uobj, pageidx);
1159 rw_exit(uobj->vmobjlock);
1161 rw_enter(uobj->vmobjlock, RW_WRITE);
1185 rw_exit(uobj->vmobjlock);
1207 rw_exit(uobj->vmobjlock);
1217 uao_dropswap(struct uvm_object *uobj, int pageidx)
1221 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
1223 slot = uao_set_swslot(uobj, pageidx, 0);
1373 struct uvm_object *uobj = &aobj->u_obj;
1380 KASSERT(rw_write_held(uobj->vmobjlock));
1387 rw_enter(uobj->vmobjlock, RW_WRITE);
1427 uao_dropswap_range(struct uvm_object *uobj, voff_t start, voff_t end)
1429 struct uvm_aobj *aobj = (struct uvm_aobj *)uobj;
1432 KASSERT(UVM_OBJ_IS_AOBJ(uobj));
1433 KASSERT(rw_write_held(uobj->vmobjlock));