|
XenevaOS
|
#include <linux/kref.h>#include <linux/dma-buf.h>#include <linux/dma-resv.h>#include <linux/list.h>#include <linux/mutex.h>#include <drm/drm_vma_manager.h>

Go to the source code of this file.
Classes | |
| struct | drm_gem_object_funcs |
| struct | drm_gem_lru |
| struct | drm_gem_object |
Macros | |
| #define | DRM_GEM_FOPS |
Enumerations | |
| enum | drm_gem_object_status { DRM_GEM_OBJECT_RESIDENT = BIT(0) , DRM_GEM_OBJECT_PURGEABLE = BIT(1) , DRM_GEM_OBJECT_ACTIVE = BIT(2) } |
: name for the generated structure | |
DEFINE_DRM_GEM_FOPS() - macro to generate file operations for GEM drivers This macro autogenerates a suitable &struct file_operations for GEM based drivers, which can be assigned to &drm_driver.fops. Note that this structure cannot be shared between drivers, because it contains a reference to the current module using THIS_MODULE. Note that the declaration is already marked as static - if you need a non-static version of this you're probably doing it wrong and will break the THIS_MODULE reference by accident. | |
| #define | DEFINE_DRM_GEM_FOPS(name) |
| #define | drm_gem_get_unmapped_area NULL |
| #define | drm_gem_gpuva_assert_lock_held(gpuvm, obj) do {} while (0) |
| #define | drm_gem_for_each_gpuvm_bo(entry__, obj__) list_for_each_entry(entry__, &(obj__)->gpuva.list, list.entry.gem) |
| #define | drm_gem_for_each_gpuvm_bo_safe(entry__, next__, obj__) list_for_each_entry_safe(entry__, next__, &(obj__)->gpuva.list, list.entry.gem) |
| void | drm_gem_object_release (struct drm_gem_object *obj) |
| void | drm_gem_object_free (struct kref *kref) |
| int | drm_gem_object_init (struct drm_device *dev, struct drm_gem_object *obj, size_t size) |
| void | drm_gem_private_object_init (struct drm_device *dev, struct drm_gem_object *obj, size_t size) |
| void | drm_gem_private_object_fini (struct drm_gem_object *obj) |
| void | drm_gem_vm_open (struct vm_area_struct *vma) |
| void | drm_gem_vm_close (struct vm_area_struct *vma) |
| int | drm_gem_mmap_obj (struct drm_gem_object *obj, unsigned long obj_size, struct vm_area_struct *vma) |
| int | drm_gem_mmap (struct file *filp, struct vm_area_struct *vma) |
| __attribute__ ((nonnull)) static inline void __drm_gem_object_put(struct drm_gem_object *obj) | |
| int | drm_gem_handle_create (struct drm_file *file_priv, struct drm_gem_object *obj, u32 *handlep) |
| int | drm_gem_handle_delete (struct drm_file *filp, u32 handle) |
| void | drm_gem_free_mmap_offset (struct drm_gem_object *obj) |
| int | drm_gem_create_mmap_offset (struct drm_gem_object *obj) |
| int | drm_gem_create_mmap_offset_size (struct drm_gem_object *obj, size_t size) |
| struct page ** | drm_gem_get_pages (struct drm_gem_object *obj) |
| void | drm_gem_put_pages (struct drm_gem_object *obj, struct page **pages, bool dirty, bool accessed) |
| void | drm_gem_lock (struct drm_gem_object *obj) |
| void | drm_gem_unlock (struct drm_gem_object *obj) |
| int | drm_gem_vmap (struct drm_gem_object *obj, struct iosys_map *map) |
| void | drm_gem_vunmap (struct drm_gem_object *obj, struct iosys_map *map) |
| int | drm_gem_objects_lookup (struct drm_file *filp, void __user *bo_handles, int count, struct drm_gem_object ***objs_out) |
| struct drm_gem_object * | drm_gem_object_lookup (struct drm_file *filp, u32 handle) |
| long | drm_gem_dma_resv_wait (struct drm_file *filep, u32 handle, bool wait_all, unsigned long timeout) |
| int | drm_gem_lock_reservations (struct drm_gem_object **objs, int count, struct ww_acquire_ctx *acquire_ctx) |
| void | drm_gem_unlock_reservations (struct drm_gem_object **objs, int count, struct ww_acquire_ctx *acquire_ctx) |
| int | drm_gem_dumb_map_offset (struct drm_file *file, struct drm_device *dev, u32 handle, u64 *offset) |
| void | drm_gem_lru_init (struct drm_gem_lru *lru) |
| void | drm_gem_lru_remove (struct drm_gem_object *obj) |
| void | drm_gem_lru_move_tail_locked (struct drm_gem_lru *lru, struct drm_gem_object *obj) |
| void | drm_gem_lru_move_tail (struct drm_gem_lru *lru, struct drm_gem_object *obj) |
| unsigned long | drm_gem_lru_scan (struct drm_device *dev, struct drm_gem_lru *lru, unsigned int nr_to_scan, unsigned long *remaining, bool(*shrink)(struct drm_gem_object *obj, struct ww_acquire_ctx *ticket), struct ww_acquire_ctx *ticket) |
| int | drm_gem_evict_locked (struct drm_gem_object *obj) |
| #define DEFINE_DRM_GEM_FOPS | ( | name | ) |
| #define DRM_GEM_FOPS |
DRM_GEM_FOPS - Default drm GEM file operations
This macro provides a shorthand for setting the GEM file ops in the &file_operations structure. If all you need are the default ops, use DEFINE_DRM_GEM_FOPS instead.
| #define drm_gem_for_each_gpuvm_bo | ( | entry__, | |
| obj__ | |||
| ) | list_for_each_entry(entry__, &(obj__)->gpuva.list, list.entry.gem) |
drm_gem_for_each_gpuvm_bo() - iterator to walk over a list of &drm_gpuvm_bo @entry__: &drm_gpuvm_bo structure to assign to in each iteration step @obj__: the &drm_gem_object the &drm_gpuvm_bo to walk are associated with
This iterator walks over all &drm_gpuvm_bo structures associated with the &drm_gem_object.
| #define drm_gem_for_each_gpuvm_bo_safe | ( | entry__, | |
| next__, | |||
| obj__ | |||
| ) | list_for_each_entry_safe(entry__, next__, &(obj__)->gpuva.list, list.entry.gem) |
drm_gem_for_each_gpuvm_bo_safe() - iterator to safely walk over a list of &drm_gpuvm_bo @entry__: &drm_gpuvm_bostructure to assign to in each iteration step @next__: &next &drm_gpuvm_bo to store the next step @obj__: the &drm_gem_object the &drm_gpuvm_bo to walk are associated with
This iterator walks over all &drm_gpuvm_bo structures associated with the &drm_gem_object. It is implemented with list_for_each_entry_safe(), hence it is save against removal of elements.
| #define drm_gem_get_unmapped_area NULL |
| #define drm_gem_gpuva_assert_lock_held | ( | gpuvm, | |
| obj | |||
| ) | do {} while (0) |
enum drm_gem_object_status - bitmask of object state for fdinfo reporting @DRM_GEM_OBJECT_RESIDENT: object is resident in memory (ie. not unpinned) @DRM_GEM_OBJECT_PURGEABLE: object marked as purgeable by userspace @DRM_GEM_OBJECT_ACTIVE: object is currently used by an active submission
Bitmask of status used for fdinfo memory stats, see &drm_gem_object_funcs.status and drm_show_fdinfo(). Note that an object can report DRM_GEM_OBJECT_PURGEABLE and be active or not resident, in which case drm_show_fdinfo() will not account for it as purgeable. So drivers do not need to check if the buffer is idle and resident to return this bit, i.e. userspace can mark a buffer as purgeable even while it is still busy on the GPU. It will not get reported in the puregeable stats until it becomes idle. The status gem object func does not need to consider this.
| Enumerator | |
|---|---|
| DRM_GEM_OBJECT_RESIDENT | |
| DRM_GEM_OBJECT_PURGEABLE | |
| DRM_GEM_OBJECT_ACTIVE | |
| __attribute__ | ( | (nonnull) | ) |
| int drm_gem_create_mmap_offset | ( | struct drm_gem_object * | obj | ) |
| int drm_gem_create_mmap_offset_size | ( | struct drm_gem_object * | obj, |
| size_t | size | ||
| ) |
| long drm_gem_dma_resv_wait | ( | struct drm_file * | filep, |
| u32 | handle, | ||
| bool | wait_all, | ||
| unsigned long | timeout | ||
| ) |
| int drm_gem_dumb_map_offset | ( | struct drm_file * | file, |
| struct drm_device * | dev, | ||
| u32 | handle, | ||
| u64 * | offset | ||
| ) |
| int drm_gem_evict_locked | ( | struct drm_gem_object * | obj | ) |
| void drm_gem_free_mmap_offset | ( | struct drm_gem_object * | obj | ) |
| struct page ** drm_gem_get_pages | ( | struct drm_gem_object * | obj | ) |
| int drm_gem_handle_create | ( | struct drm_file * | file_priv, |
| struct drm_gem_object * | obj, | ||
| u32 * | handlep | ||
| ) |
| void drm_gem_lock | ( | struct drm_gem_object * | obj | ) |
| int drm_gem_lock_reservations | ( | struct drm_gem_object ** | objs, |
| int | count, | ||
| struct ww_acquire_ctx * | acquire_ctx | ||
| ) |
| void drm_gem_lru_init | ( | struct drm_gem_lru * | lru | ) |
| void drm_gem_lru_move_tail | ( | struct drm_gem_lru * | lru, |
| struct drm_gem_object * | obj | ||
| ) |
| void drm_gem_lru_move_tail_locked | ( | struct drm_gem_lru * | lru, |
| struct drm_gem_object * | obj | ||
| ) |
| void drm_gem_lru_remove | ( | struct drm_gem_object * | obj | ) |
| unsigned long drm_gem_lru_scan | ( | struct drm_device * | dev, |
| struct drm_gem_lru * | lru, | ||
| unsigned int | nr_to_scan, | ||
| unsigned long * | remaining, | ||
| bool(*)(struct drm_gem_object *obj, struct ww_acquire_ctx *ticket) | shrink, | ||
| struct ww_acquire_ctx * | ticket | ||
| ) |
| int drm_gem_mmap | ( | struct file * | filp, |
| struct vm_area_struct * | vma | ||
| ) |
| int drm_gem_mmap_obj | ( | struct drm_gem_object * | obj, |
| unsigned long | obj_size, | ||
| struct vm_area_struct * | vma | ||
| ) |
| void drm_gem_object_free | ( | struct kref * | kref | ) |
| int drm_gem_object_init | ( | struct drm_device * | dev, |
| struct drm_gem_object * | obj, | ||
| size_t | size | ||
| ) |
| struct drm_gem_object * drm_gem_object_lookup | ( | struct drm_file * | filp, |
| u32 | handle | ||
| ) |
| void drm_gem_object_release | ( | struct drm_gem_object * | obj | ) |
| int drm_gem_objects_lookup | ( | struct drm_file * | filp, |
| void __user * | bo_handles, | ||
| int | count, | ||
| struct drm_gem_object *** | objs_out | ||
| ) |
| void drm_gem_private_object_fini | ( | struct drm_gem_object * | obj | ) |
| void drm_gem_private_object_init | ( | struct drm_device * | dev, |
| struct drm_gem_object * | obj, | ||
| size_t | size | ||
| ) |
| void drm_gem_put_pages | ( | struct drm_gem_object * | obj, |
| struct page ** | pages, | ||
| bool | dirty, | ||
| bool | accessed | ||
| ) |
| void drm_gem_unlock | ( | struct drm_gem_object * | obj | ) |
| void drm_gem_unlock_reservations | ( | struct drm_gem_object ** | objs, |
| int | count, | ||
| struct ww_acquire_ctx * | acquire_ctx | ||
| ) |
| void drm_gem_vm_close | ( | struct vm_area_struct * | vma | ) |
| void drm_gem_vm_open | ( | struct vm_area_struct * | vma | ) |
| int drm_gem_vmap | ( | struct drm_gem_object * | obj, |
| struct iosys_map * | map | ||
| ) |
| void drm_gem_vunmap | ( | struct drm_gem_object * | obj, |
| struct iosys_map * | map | ||
| ) |