Lines Matching refs:obj

92 			struct drm_gem_object *obj,
98 key = obj->name % DRM_GEM_OBJIDR_HASHNODE;
100 entry->obj = obj;
101 entry->handle = obj->name;
102 *handlep = obj->name;
116 return (entry->obj);
176 drm_gem_object_reference(struct drm_gem_object *obj)
178 atomic_inc(&obj->refcount);
182 drm_gem_object_unreference(struct drm_gem_object *obj)
184 if (obj == NULL)
187 atomic_sub(1, &obj->refcount);
188 if (obj->refcount == 0)
189 drm_gem_object_free(obj);
193 drm_gem_object_handle_reference(struct drm_gem_object *obj)
195 drm_gem_object_reference(obj);
196 atomic_inc(&obj->handlecount);
200 drm_gem_object_handle_unreference(struct drm_gem_object *obj)
202 if (obj == NULL)
210 atomic_sub(1, &obj->handlecount);
211 if (obj->handlecount == 0)
212 drm_gem_object_handle_free(obj);
213 drm_gem_object_unreference(obj);
260 struct drm_gem_object *obj;
269 obj = kmem_zalloc(sizeof (struct drm_gem_object), KM_NOSLEEP);
270 if (obj == NULL)
273 obj->dev = dev;
274 obj->flink = 0;
275 obj->size = size;
281 obj->name = ++shfile_name;
287 DDI_DMA_DONTWAIT, NULL, &obj->dma_hdl)) {
292 if (ddi_dma_mem_alloc(obj->dma_hdl, ptob(pgcnt), &acc_attr,
294 &obj->kaddr, &obj->real_size, &obj->acc_hdl)) {
299 if (ddi_dma_addr_bind_handle(obj->dma_hdl, NULL,
300 obj->kaddr, obj->real_size, DDI_DMA_RDWR,
308 real_pgcnt = btopr(obj->real_size);
310 obj->pfnarray = kmem_zalloc(real_pgcnt * sizeof (pfn_t), KM_NOSLEEP);
311 if (obj->pfnarray == NULL) {
319 obj->pfnarray[n++] = btop(paddr);
325 ddi_dma_nextcookie(obj->dma_hdl, &cookie);
334 map->handle = obj;
338 map->size = obj->real_size;
342 gfxp_umem_cookie_init(obj->kaddr, obj->real_size);
347 obj->map = map;
349 atomic_set(&obj->refcount, 1);
350 atomic_set(&obj->handlecount, 1);
352 dev->driver->gem_init_object(obj) != 0) {
356 atomic_add(obj->size, &dev->object_memory);
358 return (obj);
365 kmem_free(obj->pfnarray, real_pgcnt * sizeof (pfn_t));
367 (void) ddi_dma_unbind_handle(obj->dma_hdl);
369 ddi_dma_mem_free(&obj->acc_hdl);
371 ddi_dma_free_handle(&obj->dma_hdl);
373 kmem_free(obj, sizeof (struct drm_gem_object));
385 struct drm_gem_object *obj;
400 obj = idr_list_find(&filp->object_idr, handle);
401 if (obj == NULL) {
403 DRM_ERROR("obj %d is not in tne list, failed to close", handle);
406 dev = obj->dev;
416 drm_gem_object_handle_unreference(obj);
428 struct drm_gem_object *obj,
441 ret = idr_list_get_new_above(&file_priv->object_idr, obj, handlep);
451 drm_gem_object_handle_reference(obj);
460 struct drm_gem_object *obj;
465 obj = idr_list_find(&filp->object_idr, handle);
466 if (obj == NULL) {
472 drm_gem_object_reference(obj);
476 return (obj);
513 struct drm_gem_object *obj;
521 obj = drm_gem_object_lookup(fpriv, args.handle);
522 if (obj == NULL)
526 if (!obj->flink) {
529 obj, &handle);
530 obj->flink = obj->name;
532 drm_gem_object_reference(obj);
538 args.name = obj->name;
546 drm_gem_object_unreference(obj);
564 struct drm_gem_object *obj;
577 obj = idr_list_find(&dev->object_name_idr, args.name);
579 if (obj)
580 drm_gem_object_reference(obj);
582 if (!obj) {
583 DRM_ERROR("Can't find the obj %d", args.name);
587 ret = drm_gem_handle_create(fpriv, obj, &handle);
589 drm_gem_object_unreference(obj);
593 args.size = obj->size;
617 drm_gem_object_release_handle(struct drm_gem_object *obj)
619 drm_gem_object_handle_unreference(obj);
634 drm_gem_object_release_handle(entry->obj);
647 drm_gem_object_free(struct drm_gem_object *obj)
649 struct drm_device *dev = obj->dev;
650 struct drm_local_map *map = obj->map;
653 dev->driver->gem_free_object(obj);
658 kmem_free(obj->pfnarray, btopr(obj->real_size) * sizeof (pfn_t));
660 (void) ddi_dma_unbind_handle(obj->dma_hdl);
661 ddi_dma_mem_free(&obj->acc_hdl);
662 ddi_dma_free_handle(&obj->dma_hdl);
665 atomic_sub(obj->size, &dev->object_memory);
666 kmem_free(obj, sizeof (struct drm_gem_object));
677 drm_gem_object_handle_free(struct drm_gem_object *obj)
680 struct drm_device *dev = obj->dev;
683 if (obj->flink) {
684 err = idr_list_remove(&dev->object_name_idr, obj->name);
687 obj->flink = 0;
693 drm_gem_object_unreference(obj);