Go to the source code of this file.
|
| #define | DRM_EXEC_INTERRUPTIBLE_WAIT BIT(0) |
| |
| #define | DRM_EXEC_IGNORE_DUPLICATES BIT(1) |
| |
| #define | DRM_EXEC_DUMMY ((void *)~0) |
| |
| #define | __drm_exec_for_each_locked_object(exec, obj, __index) for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index) |
| |
| #define | drm_exec_for_each_locked_object(exec, obj) __drm_exec_for_each_locked_object(exec, obj, __UNIQUE_ID(drm_exec)) |
| |
| #define | __drm_exec_for_each_locked_object_reverse(exec, obj, __index) |
| |
| #define | drm_exec_for_each_locked_object_reverse(exec, obj) __drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec)) |
| |
| #define | drm_exec_until_all_locked(exec) |
| |
| #define | drm_exec_retry_on_contention(exec) |
| |
| #define | drm_exec_retry(_exec) |
| |
◆ __drm_exec_for_each_locked_object
| #define __drm_exec_for_each_locked_object |
( |
|
exec, |
|
|
|
obj, |
|
|
|
__index |
|
) |
| for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index) |
◆ __drm_exec_for_each_locked_object_reverse
| #define __drm_exec_for_each_locked_object_reverse |
( |
|
exec, |
|
|
|
obj, |
|
|
|
__index |
|
) |
| |
Value: for (unsigned long __index = (exec)->num_objects - 1; \
((obj) = drm_exec_obj(exec, __index)); --__index)
◆ DRM_EXEC_DUMMY
| #define DRM_EXEC_DUMMY ((void *)~0) |
◆ drm_exec_for_each_locked_object
drm_exec_for_each_locked_object - iterate over all the locked objects @exec: drm_exec object @obj: the current GEM object
Iterate over all the locked GEM objects inside the drm_exec object.
◆ drm_exec_for_each_locked_object_reverse
drm_exec_for_each_locked_object_reverse - iterate over all the locked objects in reverse locking order @exec: drm_exec object @obj: the current GEM object
Iterate over all the locked GEM objects inside the drm_exec object in reverse locking order. Note that the internal index may wrap around, but that will be caught by drm_exec_obj(), returning a NULL object.
◆ DRM_EXEC_IGNORE_DUPLICATES
| #define DRM_EXEC_IGNORE_DUPLICATES BIT(1) |
◆ DRM_EXEC_INTERRUPTIBLE_WAIT
| #define DRM_EXEC_INTERRUPTIBLE_WAIT BIT(0) |
◆ drm_exec_retry
| #define drm_exec_retry |
( |
|
_exec | ) |
|
Value: do { \
} while (__drm_exec_loop)
#define DRM_EXEC_DUMMY
Definition drm_exec.h:16
#define drm_exec_retry(_exec)
Definition drm_exec.h:160
drm_exec_retry() - Unconditionally restart the loop to grab all locks. @exec: drm_exec object
Unconditionally retry the loop to lock all objects. For consistency, the exec object needs to be newly initialized. The __drm_exec_loop check exists to prevent usage outside of an drm_exec_until_all_locked() loop.
◆ drm_exec_retry_on_contention
| #define drm_exec_retry_on_contention |
( |
|
exec | ) |
|
Value: do { \
if (
unlikely(drm_exec_is_contended(exec))) \
} while (__drm_exec_loop)
#define unlikely(x)
Definition compiler.h:30
drm_exec_retry_on_contention - restart the loop to grap all locks @exec: drm_exec object
Control flow helper to continue when a contention was detected and we need to clean up and re-start the loop to prepare all GEM objects. The __drm_exec_loop check exists to prevent usage outside of an drm_exec_until_all_locked() loop.
◆ drm_exec_until_all_locked
| #define drm_exec_until_all_locked |
( |
|
exec | ) |
|
Value:
drm_exec_cleanup(exec);) \
if (false) { \
continue; \
} else
#define __maybe_unused
Definition compiler_attributes.h:352
drm_exec_until_all_locked - loop until all GEM objects are locked @exec: drm_exec object
Core functionality of the drm_exec object. Loops until all GEM objects are locked and no more contention exists. At the beginning of the loop it is guaranteed that no GEM object is locked.
A global label name drm_exec_retry is used, if you need to use more than one instance of this macro in the same function the label needs to be made local to the block with the label keyword.
◆ drm_exec_cleanup()
◆ drm_exec_fini()
| void drm_exec_fini |
( |
struct drm_exec * |
exec | ) |
|
◆ drm_exec_init()
| void drm_exec_init |
( |
struct drm_exec * |
exec, |
|
|
u32 |
flags, |
|
|
unsigned |
nr |
|
) |
| |
◆ drm_exec_lock_obj()
◆ drm_exec_prepare_array()
| int drm_exec_prepare_array |
( |
struct drm_exec * |
exec, |
|
|
struct drm_gem_object ** |
objects, |
|
|
unsigned int |
num_objects, |
|
|
unsigned int |
num_fences |
|
) |
| |
◆ drm_exec_prepare_obj()
◆ drm_exec_unlock_obj()