Make the assertions guarding syscalls (drmIoctl in particular) verbose
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 29 Mar 2012 11:45:59 +0000 (12:45 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 29 Mar 2012 11:50:07 +0000 (12:50 +0100)
Currently all we see is gem_read: ret == 0 failed, where it would help
to see the errno and/or the ret.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
lib/drmtest.c
lib/drmtest.h
lib/intel_batchbuffer.c

index f9b7a6f..82bbae5 100644 (file)
@@ -78,7 +78,6 @@ void gem_quiescent_gpu(int fd)
        uint32_t handle;
        struct drm_i915_gem_execbuffer2 execbuf;
        struct drm_i915_gem_exec_object2 gem_exec[1];
-       int ret = 0;
 
        handle = gem_create(fd, 4096);
        gem_write(fd, handle, 0, batch, sizeof(batch));
@@ -104,10 +103,7 @@ void gem_quiescent_gpu(int fd)
        execbuf.rsvd1 = 0;
        execbuf.rsvd2 = 0;
 
-       ret = drmIoctl(fd,
-                      DRM_IOCTL_I915_GEM_EXECBUFFER2,
-                      &execbuf);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
 
        gem_sync(fd, handle);
 }
@@ -198,51 +194,43 @@ void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride)
 void gem_close(int fd, uint32_t handle)
 {
        struct drm_gem_close close_bo;
-       int ret;
 
        close_bo.handle = handle;
-       ret = drmIoctl(fd, DRM_IOCTL_GEM_CLOSE, &close_bo);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close_bo);
 }
 
 void gem_write(int fd, uint32_t handle, uint32_t offset, const void *buf, uint32_t size)
 {
        struct drm_i915_gem_pwrite gem_pwrite;
-       int ret;
 
        gem_pwrite.handle = handle;
        gem_pwrite.offset = offset;
        gem_pwrite.size = size;
        gem_pwrite.data_ptr = (uintptr_t)buf;
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_PWRITE, &gem_pwrite);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_PWRITE, &gem_pwrite);
 }
 
 void gem_read(int fd, uint32_t handle, uint32_t offset, void *buf, uint32_t length)
 {
        struct drm_i915_gem_pread gem_pread;
-       int ret;
 
        gem_pread.handle = handle;
        gem_pread.offset = offset;
        gem_pread.size = length;
        gem_pread.data_ptr = (uintptr_t)buf;
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_PREAD, &gem_pread);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_PREAD, &gem_pread);
 }
 
 void gem_set_domain(int fd, uint32_t handle,
                    uint32_t read_domains, uint32_t write_domain)
 {
        struct drm_i915_gem_set_domain set_domain;
-       int ret;
 
        set_domain.handle = handle;
        set_domain.read_domains = read_domains;
        set_domain.write_domain = write_domain;
 
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain);
 }
 
 void gem_sync(int fd, uint32_t handle)
@@ -253,12 +241,10 @@ void gem_sync(int fd, uint32_t handle)
 uint32_t gem_create(int fd, int size)
 {
        struct drm_i915_gem_create create;
-       int ret;
 
        create.handle = 0;
        create.size = size;
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
        assert(create.handle);
 
        return create.handle;
@@ -285,7 +271,7 @@ uint64_t gem_aperture_size(int fd)
        struct drm_i915_gem_get_aperture aperture;
 
        aperture.aper_size = 256*1024*1024;
-       (void)drmIoctl(fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture);
        return aperture.aper_size;
 }
 
@@ -306,13 +292,11 @@ uint64_t gem_mappable_aperture_size(void)
 int gem_madvise(int fd, uint32_t handle, int state)
 {
        struct drm_i915_gem_madvise madv;
-       int ret;
 
        madv.handle = handle;
        madv.madv = state;
        madv.retained = 1;
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);
-       assert(ret == 0);
+       do_ioctl(fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);
 
        return madv.retained;
 }
index 96fbf1a..ea5e502 100644 (file)
@@ -71,3 +71,15 @@ void drmtest_progress(const char *header, uint64_t i, uint64_t total);
 void drmtest_init_aperture_trashers(drm_intel_bufmgr *bufmgr);
 void drmtest_trash_aperture(void);
 void drmtest_cleanup_aperture_trashers(void);
+
+inline static void _do_or_die(const char *function, int line, int ret)
+{
+       if (ret == 0)
+               return;
+
+       fprintf(stderr, "%s:%d failed, ret=%d, errno=%d\n",
+               function, line, ret, errno);
+       abort();
+}
+#define do_or_die(x) _do_or_die(__FUNCTION__, __LINE__, x)
+#define do_ioctl(fd, ptr, sz) do_or_die(drmIoctl((fd), (ptr), (sz)))
index 518435c..325066e 100644 (file)
@@ -32,6 +32,7 @@
 #include <assert.h>
 
 #include "drm.h"
+#include "drmtest.h"
 #include "intel_batchbuffer.h"
 #include "intel_bufmgr.h"
 #include "intel_chipset.h"
@@ -78,7 +79,6 @@ void
 intel_batchbuffer_flush_on_ring(struct intel_batchbuffer *batch, int ring)
 {
        unsigned int used = batch->ptr - batch->buffer;
-       int ret;
 
        if (used == 0)
                return;
@@ -101,13 +101,11 @@ intel_batchbuffer_flush_on_ring(struct intel_batchbuffer *batch, int ring)
        batch->ptr += 4;
        used = batch->ptr - batch->buffer;
 
-       ret = drm_intel_bo_subdata(batch->bo, 0, used, batch->buffer);
-       assert(ret == 0);
+       do_or_die(drm_intel_bo_subdata(batch->bo, 0, used, batch->buffer));
 
        batch->ptr = NULL;
 
-       ret = drm_intel_bo_mrb_exec(batch->bo, used, NULL, 0, 0, ring);
-       assert(ret == 0);
+       do_or_die(drm_intel_bo_mrb_exec(batch->bo, used, NULL, 0, 0, ring));
 
        intel_batchbuffer_reset(batch);
 }