Mesa (main): turnip: Use drmIoctl()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jun 26 19:02:33 UTC 2021


Module: Mesa
Branch: main
Commit: 7ca79b76396a663f604af386a8aed6de57629a11
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ca79b76396a663f604af386a8aed6de57629a11

Author: Rob Clark <robdclark at chromium.org>
Date:   Thu Jun 24 11:11:08 2021 -0700

turnip: Use drmIoctl()

Replace open-coded ioctl with drmIoctl() to get restart on interrupted
system calls.

Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11612>

---

 src/freedreno/vulkan/tu_drm.c | 34 +++++++++++++++++-----------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/freedreno/vulkan/tu_drm.c b/src/freedreno/vulkan/tu_drm.c
index f4c0e5921ff..7a166cff047 100644
--- a/src/freedreno/vulkan/tu_drm.c
+++ b/src/freedreno/vulkan/tu_drm.c
@@ -526,7 +526,7 @@ tu_timeline_finish(struct tu_device *device,
    list_for_each_entry_safe(struct tu_timeline_point, point,
                             &timeline->free_points, link) {
       list_del(&point->link);
-      ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
+      drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
             &(struct drm_syncobj_destroy) { .handle = point->syncobj });
 
       vk_free(&device->vk.alloc, point);
@@ -534,7 +534,7 @@ tu_timeline_finish(struct tu_device *device,
    list_for_each_entry_safe(struct tu_timeline_point, point,
                             &timeline->points, link) {
       list_del(&point->link);
-      ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
+      drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
             &(struct drm_syncobj_destroy) { .handle = point->syncobj });
       vk_free(&device->vk.alloc, point);
    }
@@ -562,7 +562,7 @@ sync_create(VkDevice _device,
       if (signaled)
          create.flags |= DRM_SYNCOBJ_CREATE_SIGNALED;
 
-      int ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
+      int ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
       if (ret) {
          vk_free2(&device->vk.alloc, pAllocator, sync);
          return VK_ERROR_OUT_OF_HOST_MEMORY;
@@ -588,7 +588,7 @@ static void
 sync_set_temporary(struct tu_device *device, struct tu_syncobj *sync, uint32_t syncobj)
 {
    if (sync->binary.temporary) {
-      ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
+      drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
             &(struct drm_syncobj_destroy) { .handle = sync->binary.temporary });
    }
    sync->binary.temporary = syncobj;
@@ -604,7 +604,7 @@ sync_destroy(VkDevice _device, struct tu_syncobj *sync, const VkAllocationCallba
 
    if (sync->type == TU_SEMAPHORE_BINARY) {
       sync_set_temporary(device, sync, 0);
-      ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
+      drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
             &(struct drm_syncobj_destroy) { .handle = sync->binary.permanent });
    } else {
       tu_timeline_finish(device, &sync->timeline);
@@ -623,12 +623,12 @@ sync_import(VkDevice _device, struct tu_syncobj *sync, bool temporary, bool sync
       uint32_t *dst = temporary ? &sync->binary.temporary : &sync->binary.permanent;
 
       struct drm_syncobj_handle handle = { .fd = fd };
-      ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, &handle);
+      ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, &handle);
       if (ret)
          return VK_ERROR_INVALID_EXTERNAL_HANDLE;
 
       if (*dst) {
-         ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
+         drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
                &(struct drm_syncobj_destroy) { .handle = *dst });
       }
       *dst = handle.handle;
@@ -641,18 +641,18 @@ sync_import(VkDevice _device, struct tu_syncobj *sync, bool temporary, bool sync
       if (fd == -1)
          create.flags |= DRM_SYNCOBJ_CREATE_SIGNALED;
 
-      ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
+      ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
       if (ret)
          return VK_ERROR_INVALID_EXTERNAL_HANDLE;
 
       if (fd != -1) {
-         ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, &(struct drm_syncobj_handle) {
+         ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, &(struct drm_syncobj_handle) {
             .fd = fd,
             .handle = create.handle,
             .flags = DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE,
          });
          if (ret) {
-            ioctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
+            drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_DESTROY,
                   &(struct drm_syncobj_destroy) { .handle = create.handle });
             return VK_ERROR_INVALID_EXTERNAL_HANDLE;
          }
@@ -675,7 +675,7 @@ sync_export(VkDevice _device, struct tu_syncobj *sync, bool sync_fd, int *p_fd)
       .flags = COND(sync_fd, DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE),
       .fd = -1,
    };
-   int ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD, &handle);
+   int ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD, &handle);
    if (ret)
       return vk_error(device->instance, VK_ERROR_INVALID_EXTERNAL_HANDLE);
 
@@ -1145,7 +1145,7 @@ tu_timeline_add_point_locked(struct tu_device *device,
 
       struct drm_syncobj_create create = {};
 
-      int ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
+      int ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
       if (ret) {
          vk_free(&device->vk.alloc, *point);
          return vk_error(device->instance, VK_ERROR_DEVICE_LOST);
@@ -1320,7 +1320,7 @@ tu_QueueSubmit(VkQueue _queue,
 
    if (!submitCount && fence) {
       /* signal fence imemediately since we don't have a submit to do it */
-      ioctl(queue->device->fd, DRM_IOCTL_SYNCOBJ_SIGNAL, &(struct drm_syncobj_array) {
+      drmIoctl(queue->device->fd, DRM_IOCTL_SYNCOBJ_SIGNAL, &(struct drm_syncobj_array) {
          .handles = (uintptr_t) (uint32_t[]) { fence->binary.temporary ?: fence->binary.permanent },
          .count_handles = 1,
       });
@@ -1367,7 +1367,7 @@ drm_syncobj_wait(struct tu_device *device,
                  const uint32_t *handles, uint32_t count_handles,
                  int64_t timeout_nsec, bool wait_all)
 {
-   int ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_WAIT, &(struct drm_syncobj_wait) {
+   int ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_WAIT, &(struct drm_syncobj_wait) {
       .handles = (uint64_t) (uintptr_t) handles,
       .count_handles = count_handles,
       .timeout_nsec = timeout_nsec,
@@ -1440,7 +1440,7 @@ tu_ResetFences(VkDevice _device, uint32_t fenceCount, const VkFence *pFences)
       handles[i] = fence->binary.permanent;
    }
 
-   ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_RESET, &(struct drm_syncobj_array) {
+   ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_RESET, &(struct drm_syncobj_array) {
       .handles = (uint64_t) (uintptr_t) handles,
       .count_handles = fenceCount,
    });
@@ -1478,7 +1478,7 @@ tu_signal_fences(struct tu_device *device, struct tu_syncobj *fence1, struct tu_
    if (!count)
       return 0;
 
-   return ioctl(device->fd, DRM_IOCTL_SYNCOBJ_SIGNAL, &(struct drm_syncobj_array) {
+   return drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_SIGNAL, &(struct drm_syncobj_array) {
       .handles = (uintptr_t) handles,
       .count_handles = count
    });
@@ -1490,7 +1490,7 @@ tu_syncobj_to_fd(struct tu_device *device, struct tu_syncobj *sync)
    struct drm_syncobj_handle handle = { .handle = sync->binary.permanent };
    int ret;
 
-   ret = ioctl(device->fd, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD, &handle);
+   ret = drmIoctl(device->fd, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD, &handle);
 
    return ret ? -1 : handle.fd;
 }



More information about the mesa-commit mailing list