|
XenevaOS
|
#include <xe_drm.h>
Public Attributes | |
| __u64 | extensions |
| __u64 | addr |
| __u16 | op |
| __u16 | flags |
| __u32 | pad |
| __u64 | value |
| __u64 | mask |
| __s64 | timeout |
| __u32 | exec_queue_id |
| __u32 | pad2 |
| __u64 | reserved [2] |
struct drm_xe_wait_user_fence - Input of &DRM_IOCTL_XE_WAIT_USER_FENCE
Wait on user fence, XE will wake-up on every HW engine interrupt in the instances list and check if user fence is complete::
(*addr & MASK) OP (VALUE & MASK)
Returns to user on user fence completion or timeout.
The @op can be:
and the @flags can be:
The @mask values can be for example:
| __u64 drm_xe_wait_user_fence::addr |
@addr: user pointer address to wait on, must be qword aligned
| __u32 drm_xe_wait_user_fence::exec_queue_id |
@exec_queue_id: exec_queue_id returned from xe_exec_queue_create_ioctl
| __u64 drm_xe_wait_user_fence::extensions |
@extensions: Pointer to the first extension struct, if any
| __u16 drm_xe_wait_user_fence::flags |
@flags: wait flags
| __u64 drm_xe_wait_user_fence::mask |
@mask: comparison mask
| __u16 drm_xe_wait_user_fence::op |
@op: wait operation (type of comparison)
| __u32 drm_xe_wait_user_fence::pad |
@pad: MBZ
| __u32 drm_xe_wait_user_fence::pad2 |
@pad2: MBZ
| __u64 drm_xe_wait_user_fence::reserved[2] |
@reserved: Reserved
| __s64 drm_xe_wait_user_fence::timeout |
@timeout: how long to wait before bailing, value in nanoseconds. Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout) it contains timeout expressed in nanoseconds to wait (fence will expire at now() + timeout). When DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag is set (absolute timeout) wait will end at timeout (uses system CLOCK_MONOTONIC). Passing negative timeout leads to never ending wait.
On relative timeout this value is updated with timeout left (for restarting the call in case of signal delivery). On absolute timeout this value stays intact (restarted call still expire at the same point of time).
| __u64 drm_xe_wait_user_fence::value |
@value: compare value