diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ioctl_wrappers.c | 32 | ||||
-rw-r--r-- | lib/ioctl_wrappers.h | 2 |
2 files changed, 14 insertions, 20 deletions
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c index 51b6b7b6..1b483706 100644 --- a/lib/ioctl_wrappers.c +++ b/lib/ioctl_wrappers.c @@ -551,22 +551,20 @@ uint32_t gem_create_stolen(int fd, uint64_t size) return create.handle; } - -uint32_t __gem_create(int fd, int size) +int __gem_create(int fd, int size, uint32_t *handle) { - struct drm_i915_gem_create create; - int ret; - - memset(&create, 0, sizeof(create)); - create.handle = 0; - create.size = size; - ret = igt_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create); + struct drm_i915_gem_create create = { + .size = size, + }; + int err = 0; - if (ret < 0) - return 0; + if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create) == 0) + *handle = create.handle; + else + err = -errno; errno = 0; - return create.handle; + return err; } /** @@ -581,15 +579,11 @@ uint32_t __gem_create(int fd, int size) */ uint32_t gem_create(int fd, uint64_t size) { - struct drm_i915_gem_create create; + uint32_t handle; - memset(&create, 0, sizeof(create)); - create.handle = 0; - create.size = size; - do_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create); - igt_assert(create.handle); + igt_assert_eq(__gem_create(fd, size, &handle), 0); - return create.handle; + return handle; } /** diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h index 090c1251..6ed65fad 100644 --- a/lib/ioctl_wrappers.h +++ b/lib/ioctl_wrappers.h @@ -73,7 +73,7 @@ void gem_sync(int fd, uint32_t handle); bool gem_create__has_stolen_support(int fd); uint32_t __gem_create_stolen(int fd, uint64_t size); uint32_t gem_create_stolen(int fd, uint64_t size); -uint32_t __gem_create(int fd, int size); +int __gem_create(int fd, int size, uint32_t *handle); uint32_t gem_create(int fd, uint64_t size); void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf); int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf); |