int drm_gem_handle_delete(struct drm_file *file_priv, uint32_t handle) { struct drm_gem_object *obj; obj = drm_gem_names_remove(&file_priv->object_names, handle); if (obj == NULL) return (EINVAL); drm_gem_object_handle_unreference_unlocked(obj); return (0); }
void drm_gem_object_handle_free(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; struct drm_gem_object *obj1; if (obj->name) { obj1 = drm_gem_names_remove(&dev->object_names, obj->name); obj->name = 0; drm_gem_object_unreference(obj1); } }
static void do_destroy(struct i915_hw_context *ctx) { #if defined(INVARIANTS) struct drm_device *dev = ctx->obj->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; #endif if (ctx->file_priv) drm_gem_names_remove(&ctx->file_priv->context_idr, ctx->id); else KASSERT(ctx == dev_priv->rings[RCS].default_context, ("i915_gem_context: ctx != default_context")); drm_gem_object_unreference(&ctx->obj->base); free(ctx, DRM_I915_GEM); }
/** * Removes the mapping from handle to filp for this object. */ int drm_gem_handle_delete(struct drm_file *filp, u32 handle) { struct drm_device *dev; struct drm_gem_object *obj; obj = drm_gem_names_remove(&filp->object_names, handle); if (obj == NULL) { return -EINVAL; } dev = obj->dev; #if defined(FREEBSD_NOTYET) drm_gem_remove_prime_handles(obj, filp); #endif if (dev->driver->gem_close_object) dev->driver->gem_close_object(obj, filp); drm_gem_object_handle_unreference_unlocked(obj); return 0; }