diff options
-rw-r--r-- | lib/ioctl_wrappers.c | 32 | ||||
-rw-r--r-- | lib/ioctl_wrappers.h | 2 | ||||
-rw-r--r-- | tests/gem_create.c | 5 | ||||
-rw-r--r-- | tests/gem_fd_exhaustion.c | 3 |
4 files changed, 17 insertions, 25 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); diff --git a/tests/gem_create.c b/tests/gem_create.c index de7b8209..25c5e808 100644 --- a/tests/gem_create.c +++ b/tests/gem_create.c @@ -95,10 +95,9 @@ static void invalid_flag_test(int fd) static void invalid_size_test(int fd) { - int handle; + uint32_t handle; - handle = __gem_create(fd, 0); - igt_assert(!handle); + igt_assert_eq(__gem_create(fd, 0, &handle), -EINVAL); } /* diff --git a/tests/gem_fd_exhaustion.c b/tests/gem_fd_exhaustion.c index 57f2c711..250fe850 100644 --- a/tests/gem_fd_exhaustion.c +++ b/tests/gem_fd_exhaustion.c @@ -78,8 +78,7 @@ igt_simple_main if (tmp_fd >= 0 && i < FD_ARR_SZ) fd_arr[i] = tmp_fd; - handle = __gem_create(fd, 4096); - if (handle) + if (__gem_create(fd, 4096, &handle) == 0) gem_close(fd, handle); |