## syncobj syncobj — Library with syncobj helpers |

## Functions

uint32_t | syncobj_create ()
void | syncobj_destroy ()
int | syncobj_handle_to_fd ()
uint32_t | syncobj_fd_to_handle ()
void | syncobj_import_sync_file ()
int | syncobj_wait_err ()
bool | syncobj_wait ()
void | syncobj_reset ()
void | syncobj_signal ()

## Types and Values

#define | LOCAL_SYNCOBJ_CREATE_SIGNALED
#define | LOCAL_SYNCOBJ_WAIT_FLAGS_WAIT_ALL
#define | LOCAL_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT
struct | local_syncobj_wait
struct | local_syncobj_array
#define | LOCAL_IOCTL_SYNCOBJ_WAIT
#define | LOCAL_IOCTL_SYNCOBJ_RESET
#define | LOCAL_IOCTL_SYNCOBJ_SIGNAL

## Includes

    #include <igt_syncobj.h>

## Description

This library contains helpers for sync object tests.

## Functions

### syncobj_create ()

    uint32_t
    syncobj_create (int fd,
                    uint32_t flags);

Create a syncobj with the flags.

#### Parameters

fd | The DRM file descriptor |
flags | Flags to pass syncobj create |

#### Returns

A newly created syncobj

### syncobj_destroy ()

    void
    syncobj_destroy (int fd,
                     uint32_t handle);

#### Parameters

fd | The DRM file descriptor |
handle | The handle to the syncobj to destroy Destroy a syncobj. |

### syncobj_handle_to_fd ()

    int
    syncobj_handle_to_fd (int fd,
                          uint32_t handle,
                          uint32_t flags);

Convert a syncobj handle to an fd using the flags.

#### Parameters

fd | The DRM file descriptor |
handle | Handle to syncobj |
flags | Flags to handle to fd ioctl. |

#### Returns

a file descriptor (either syncobj or sync_file.

### syncobj_fd_to_handle ()

    uint32_t
    syncobj_fd_to_handle (int fd,
                          int syncobj_fd,
                          uint32_t flags);

Convert a syncobj fd a syncobj handle using the flags.

#### Parameters

fd | The DRM file descriptor |
syncobj_fd | syncobj fd to convert |
flags | Flags to the syncobj fd to handle ioctl. |

#### Returns

a syncobj handle.

### syncobj_import_sync_file ()

    void
    syncobj_import_sync_file (int fd,
                              uint32_t handle,
                              int sync_file);

Import a sync_file fd into a syncobj handle.

#### Parameters

fd | The DRM file descriptor |
handle | Handle to the syncobt to import file into |
sync_file | The sync_file fd to import state from. |

### syncobj_wait_err ()

    int
    syncobj_wait_err (int fd,
                      uint32_t *handles,
                      uint32_t count,
                      uint64_t abs_timeout_nsec,
                      uint32_t flags);

### syncobj_wait ()

    bool
    syncobj_wait (int fd,
                  uint32_t *handles,
                  uint32_t count,
                  uint64_t abs_timeout_nsec,
                  uint32_t flags,
                  uint32_t *first_signaled);

Waits in the kernel for any/all the requested syncobjs using the timeout and flags.

#### Parameters

fd | The DRM file descriptor |
handles | List of syncobj handles to wait for. |
count | Count of handles |
abs_timeout_nsec | Absolute wait timeout in nanoseconds. |
flags | Wait ioctl flags. |
first_signaled | Returned handle for first signaled syncobj. |

#### Returns

bool value - false = timedout, true = signaled

### syncobj_reset ()

    void
    syncobj_reset (int fd,
                   uint32_t *handles,
                   uint32_t count);

Reset state of a set of syncobjs.

#### Parameters

fd | The DRM file descriptor. |
handles | Array of syncobj handles to reset |
count | Count of syncobj handles. |

### syncobj_signal ()

    void
    syncobj_signal (int fd,
                    uint32_t *handles,
                    uint32_t count);

Signal a set of syncobjs.

#### Parameters

fd | The DRM file descriptor. |
handles | Array of syncobj handles to signal |
count | Count of syncobj handles. |

## Types and Values

### LOCAL_SYNCOBJ_CREATE_SIGNALED

    #define LOCAL_SYNCOBJ_CREATE_SIGNALED (1 << 0)

### LOCAL_SYNCOBJ_WAIT_FLAGS_WAIT_ALL

    #define LOCAL_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)

### LOCAL_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT

    #define LOCAL_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)

### struct local_syncobj_wait

    struct local_syncobj_wait {
           __u64 handles;
           /* absolute timeout */
           __s64 timeout_nsec;
           __u32 count_handles;
           __u32 flags;
           __u32 first_signaled; /* only valid when not waiting all */
           __u32 pad;
    };

### struct local_syncobj_array

    struct local_syncobj_array {
           __u64 handles;
           __u32 count_handles;
           __u32 pad;
    };

### LOCAL_IOCTL_SYNCOBJ_WAIT

    #define LOCAL_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct local_syncobj_wait)

### LOCAL_IOCTL_SYNCOBJ_RESET

    #define LOCAL_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct local_syncobj_array)

### LOCAL_IOCTL_SYNCOBJ_SIGNAL

    #define LOCAL_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct local_syncobj_array)