示例#1
0
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);
}
示例#2
0
文件: drm_gem.c 项目: coyizumi/cs111
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);
    }
}
示例#3
0
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);
}
示例#4
0
文件: drm_gem.c 项目: coyizumi/cs111
/**
 * 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;
}