Rev 5060 | Rev 6084 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5060 | Rev 5271 | ||
---|---|---|---|
Line 33... | Line 33... | ||
33 | #include |
33 | #include |
34 | #include |
34 | #include |
35 | #include |
35 | #include |
36 | #include |
36 | #include |
37 | #include |
37 | #include |
- | 38 | #include |
|
- | 39 | #include "drm_internal.h" |
|
Line 38... | Line 40... | ||
38 | 40 | ||
39 | /** @file drm_gem.c |
41 | /** @file drm_gem.c |
40 | * |
42 | * |
41 | * This file provides some of the base ioctls and library routines for |
43 | * This file provides some of the base ioctls and library routines for |
Line 141... | Line 143... | ||
141 | return 0; |
143 | return 0; |
142 | } |
144 | } |
143 | EXPORT_SYMBOL(drm_gem_object_init); |
145 | EXPORT_SYMBOL(drm_gem_object_init); |
Line 144... | Line 146... | ||
144 | 146 | ||
145 | /** |
147 | /** |
146 | * drm_gem_object_init - initialize an allocated private GEM object |
148 | * drm_gem_private_object_init - initialize an allocated private GEM object |
147 | * @dev: drm_device the object should be initialized for |
149 | * @dev: drm_device the object should be initialized for |
148 | * @obj: drm_gem_object to initialize |
150 | * @obj: drm_gem_object to initialize |
149 | * @size: object size |
151 | * @size: object size |
150 | * |
152 | * |
Line 166... | Line 168... | ||
166 | drm_vma_node_reset(&obj->vma_node); |
168 | drm_vma_node_reset(&obj->vma_node); |
167 | } |
169 | } |
168 | EXPORT_SYMBOL(drm_gem_private_object_init); |
170 | EXPORT_SYMBOL(drm_gem_private_object_init); |
Line 169... | Line 171... | ||
169 | 171 | ||
170 | /** |
172 | /** |
171 | * drm_gem_object_free - release resources bound to userspace handles |
173 | * drm_gem_object_handle_free - release resources bound to userspace handles |
172 | * @obj: GEM object to clean up. |
174 | * @obj: GEM object to clean up. |
173 | * |
175 | * |
174 | * Called after the last handle to the object has been closed |
176 | * Called after the last handle to the object has been closed |
175 | * |
177 | * |
Line 276... | Line 278... | ||
276 | 278 | ||
277 | /** |
279 | /** |
278 | * drm_gem_handle_create_tail - internal functions to create a handle |
280 | * drm_gem_handle_create_tail - internal functions to create a handle |
279 | * @file_priv: drm file-private structure to register the handle for |
281 | * @file_priv: drm file-private structure to register the handle for |
280 | * @obj: object to register |
282 | * @obj: object to register |
281 | * @handlep: pionter to return the created handle to the caller |
283 | * @handlep: pointer to return the created handle to the caller |
282 | * |
284 | * |
283 | * This expects the dev->object_name_lock to be held already and will drop it |
285 | * This expects the dev->object_name_lock to be held already and will drop it |
284 | * before returning. Used to avoid races in establishing new handles when |
286 | * before returning. Used to avoid races in establishing new handles when |
285 | * importing an object from either an flink name or a dma-buf. |
287 | * importing an object from either an flink name or a dma-buf. |
Line 329... | Line 331... | ||
329 | 331 | ||
330 | return 0; |
332 | return 0; |
Line 331... | Line 333... | ||
331 | } |
333 | } |
332 | 334 | ||
333 | /** |
335 | /** |
334 | * gem_handle_create - create a gem handle for an object |
336 | * drm_gem_handle_create - create a gem handle for an object |
335 | * @file_priv: drm file-private structure to register the handle for |
337 | * @file_priv: drm file-private structure to register the handle for |
336 | * @obj: object to register |
338 | * @obj: object to register |
337 | * @handlep: pionter to return the created handle to the caller |
339 | * @handlep: pionter to return the created handle to the caller |
338 | * |
340 | * |
339 | * Create a handle for this object. This adds a handle reference |
341 | * Create a handle for this object. This adds a handle reference |
340 | * to the object, which includes a regular reference count. Callers |
342 | * to the object, which includes a regular reference count. Callers |
341 | * will likely want to dereference the object afterwards. |
- | |
342 | */ |
343 | * will likely want to dereference the object afterwards. |
343 | int |
344 | */ |
344 | drm_gem_handle_create(struct drm_file *file_priv, |
345 | int drm_gem_handle_create(struct drm_file *file_priv, |
345 | struct drm_gem_object *obj, |
346 | struct drm_gem_object *obj, |
346 | u32 *handlep) |
347 | u32 *handlep) |
Line 549... | Line 550... | ||
549 | struct drm_file *file_priv) |
550 | struct drm_file *file_priv) |
550 | { |
551 | { |
551 | struct drm_gem_close *args = data; |
552 | struct drm_gem_close *args = data; |
552 | int ret; |
553 | int ret; |
Line 553... | Line 554... | ||
553 | 554 | ||
554 | if (!(dev->driver->driver_features & DRIVER_GEM)) |
555 | if (!drm_core_check_feature(dev, DRIVER_GEM)) |
Line 555... | Line 556... | ||
555 | return -ENODEV; |
556 | return -ENODEV; |
Line 556... | Line 557... | ||
556 | 557 | ||
Line 576... | Line 577... | ||
576 | { |
577 | { |
577 | struct drm_gem_flink *args = data; |
578 | struct drm_gem_flink *args = data; |
578 | struct drm_gem_object *obj; |
579 | struct drm_gem_object *obj; |
579 | int ret; |
580 | int ret; |
Line 580... | Line 581... | ||
580 | 581 | ||
581 | if (!(dev->driver->driver_features & DRIVER_GEM)) |
582 | if (!drm_core_check_feature(dev, DRIVER_GEM)) |
Line 582... | Line 583... | ||
582 | return -ENODEV; |
583 | return -ENODEV; |
583 | 584 | ||
584 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
585 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
Line 629... | Line 630... | ||
629 | struct drm_gem_open *args = data; |
630 | struct drm_gem_open *args = data; |
630 | struct drm_gem_object *obj; |
631 | struct drm_gem_object *obj; |
631 | int ret; |
632 | int ret; |
632 | u32 handle; |
633 | u32 handle; |
Line 633... | Line 634... | ||
633 | 634 | ||
634 | if (!(dev->driver->driver_features & DRIVER_GEM)) |
635 | if (!drm_core_check_feature(dev, DRIVER_GEM)) |
Line 635... | Line 636... | ||
635 | return -ENODEV; |
636 | return -ENODEV; |
636 | 637 | ||
637 | mutex_lock(&dev->object_name_lock); |
638 | mutex_lock(&dev->object_name_lock); |