Lines Matching refs:mgr
108 drm_vma_offset_manager_init(struct drm_vma_offset_manager *mgr,
112 rw_init(&mgr->vom_lock);
113 rb_tree_init(&mgr->vom_nodes, &drm_vma_node_rb_ops);
114 mgr->vom_vmem = vmem_create("drm_vma", startpage, npages, 1,
119 drm_vma_offset_manager_destroy(struct drm_vma_offset_manager *mgr)
122 vmem_destroy(mgr->vom_vmem);
123 KASSERTMSG((RB_TREE_MIN(&mgr->vom_nodes) == NULL),
124 "drm vma offset manager %p not empty", mgr);
126 rb_tree_destroy(&mgr->vom_nodes);
128 rw_destroy(&mgr->vom_lock);
160 drm_vma_offset_add(struct drm_vma_offset_manager *mgr,
172 error = vmem_alloc(mgr->vom_vmem, npages, VM_NOSLEEP|VM_BESTFIT,
184 rw_enter(&mgr->vom_lock, RW_WRITER);
185 collision = rb_tree_insert_node(&mgr->vom_nodes, node);
187 rw_exit(&mgr->vom_lock);
193 drm_vma_offset_remove(struct drm_vma_offset_manager *mgr,
200 rw_enter(&mgr->vom_lock, RW_WRITER);
201 rb_tree_remove_node(&mgr->vom_nodes, node);
202 rw_exit(&mgr->vom_lock);
204 vmem_free(mgr->vom_vmem, node->von_startpage, node->von_npages);
212 drm_vma_offset_lock_lookup(struct drm_vma_offset_manager *mgr)
215 rw_enter(&mgr->vom_lock, RW_READER);
219 drm_vma_offset_unlock_lookup(struct drm_vma_offset_manager *mgr)
222 rw_exit(&mgr->vom_lock);
226 drm_vma_offset_lookup_locked(struct drm_vma_offset_manager *mgr,
232 KASSERT(rw_lock_held(&mgr->vom_lock));
234 node = rb_tree_find_node_leq(&mgr->vom_nodes, &key);
247 drm_vma_offset_exact_lookup_locked(struct drm_vma_offset_manager *mgr,
253 KASSERT(rw_lock_held(&mgr->vom_lock));
255 node = rb_tree_find_node(&mgr->vom_nodes, &key);
266 drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *mgr,
271 rw_enter(&mgr->vom_lock, RW_READER);
272 node = drm_vma_offset_exact_lookup_locked(mgr, startpage, npages);
273 rw_exit(&mgr->vom_lock);