Lines Matching defs:object

65 static void dev_pager_free_page(vm_object_t object, vm_page_t m);
66 static int dev_pager_populate(vm_object_t object, vm_pindex_t pidx,
97 static int old_dev_pager_fault(vm_object_t object, vm_ooffset_t offset,
117 vm_object_t object;
121 object = vm_pager_object_lookup(&dev_pager_object_list, handle);
122 if (object != NULL && object->un_pager.devp.handle == NULL) {
123 msleep(&object->un_pager.devp.handle, &dev_pager_mtx,
125 vm_object_deallocate(object);
129 return (object);
137 vm_object_t object;
170 object = vm_pager_object_lookup(&dev_pager_object_list, handle);
171 if (object == NULL) {
175 * Allocate object and associate it with the pager. Initialize
176 * the object's pg_color based upon the physical address of the
182 object = vm_pager_object_lookup(&dev_pager_object_list, handle);
183 if (object != NULL) {
187 if (object->un_pager.devp.handle == NULL) {
188 msleep(&object->un_pager.devp.handle,
190 vm_object_deallocate(object);
195 * We raced with other thread while allocating object.
197 if (pindex > object->size)
198 object->size = pindex;
199 KASSERT(object->type == tp,
201 object, tp));
202 KASSERT(object->un_pager.devp.ops == ops,
203 ("Inconsistent devops %p %p", object, ops));
207 object = object1;
209 object->handle = handle;
210 object->un_pager.devp.ops = ops;
211 TAILQ_INIT(&object->un_pager.devp.devp_pglist);
212 TAILQ_INSERT_TAIL(&dev_pager_object_list, object,
216 vm_object_set_flag(object, OBJ_POPULATE);
220 TAILQ_REMOVE(&dev_pager_object_list, object,
222 wakeup(&object->un_pager.devp.handle);
224 object->type = OBJT_DEAD;
225 vm_object_deallocate(object);
226 object = NULL;
230 object->flags |= OBJ_COLORED;
231 object->pg_color = color;
232 object->un_pager.devp.handle = handle;
233 wakeup(&object->un_pager.devp.handle);
238 if (object->un_pager.devp.handle == NULL) {
239 msleep(&object->un_pager.devp.handle,
241 vm_object_deallocate(object);
244 if (pindex > object->size)
245 object->size = pindex;
246 KASSERT(object->type == tp,
247 ("Inconsistent device pager type %p %d", object, tp));
250 return (object);
263 cdev_pager_free_page(vm_object_t object, vm_page_t m)
266 if (object->type == OBJT_MGTDEVICE) {
269 vm_page_iter_init(&pages, object);
272 } else if (object->type == OBJT_DEVICE)
273 dev_pager_free_page(object, m);
276 ("Invalid device type obj %p m %p", object, m));
287 cdev_mgtdev_pager_free_pages(vm_object_t object)
292 vm_page_iter_init(&pages, object);
293 VM_OBJECT_WLOCK(object);
303 VM_OBJECT_WUNLOCK(object);
307 dev_pager_free_page(vm_object_t object, vm_page_t m)
310 VM_OBJECT_ASSERT_WLOCKED(object);
311 KASSERT((object->type == OBJT_DEVICE &&
313 ("Managed device or page obj %p m %p", object, m));
314 TAILQ_REMOVE(&object->un_pager.devp.devp_pglist, m, plinks.q);
319 dev_pager_dealloc(vm_object_t object)
323 VM_OBJECT_WUNLOCK(object);
324 object->un_pager.devp.ops->cdev_pg_dtor(object->un_pager.devp.handle);
327 TAILQ_REMOVE(&dev_pager_object_list, object, pager_object_list);
329 VM_OBJECT_WLOCK(object);
331 if (object->type == OBJT_DEVICE) {
335 while ((m = TAILQ_FIRST(&object->un_pager.devp.devp_pglist))
340 dev_pager_free_page(object, m);
343 object->handle = NULL;
344 object->type = OBJT_DEAD;
348 dev_pager_getpages(vm_object_t object, vm_page_t *ma, int count, int *rbehind,
355 if (object->un_pager.devp.ops->cdev_pg_fault == NULL)
357 VM_OBJECT_WLOCK(object);
358 error = object->un_pager.devp.ops->cdev_pg_fault(object,
361 VM_OBJECT_ASSERT_WLOCKED(object);
364 KASSERT((object->type == OBJT_DEVICE &&
366 (object->type == OBJT_MGTDEVICE &&
368 ("Wrong page type %p %p", ma[0], object));
369 if (object->type == OBJT_DEVICE) {
370 TAILQ_INSERT_TAIL(&object->un_pager.devp.devp_pglist,
378 VM_OBJECT_WUNLOCK(object);
384 dev_pager_populate(vm_object_t object, vm_pindex_t pidx, int fault_type,
388 VM_OBJECT_ASSERT_WLOCKED(object);
389 if (object->un_pager.devp.ops->cdev_pg_populate == NULL)
391 return (object->un_pager.devp.ops->cdev_pg_populate(object, pidx,
396 old_dev_pager_fault(vm_object_t object, vm_ooffset_t offset, int prot,
408 memattr = object->memattr;
410 VM_OBJECT_WUNLOCK(object);
412 dev = object->handle;
415 VM_OBJECT_WLOCK(object);
427 VM_OBJECT_WLOCK(object);
452 VM_OBJECT_WLOCK(object);
460 VM_OBJECT_WLOCK(object);
461 vm_page_replace(page, object, (*mres)->pindex, *mres);
469 dev_pager_putpages(vm_object_t object, vm_page_t *m, int count, int flags,
477 dev_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before,