From: Chris Wilson Date: Thu, 29 Mar 2012 11:45:59 +0000 (+0100) Subject: Make the assertions guarding syscalls (drmIoctl in particular) verbose X-Git-Tag: 1.3~133 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7bd1837ccc980666f5502fbd428d3a4be3cd26f;p=profile%2Fextras%2Fintel-gpu-tools.git Make the assertions guarding syscalls (drmIoctl in particular) verbose 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 --- diff --git a/lib/drmtest.c b/lib/drmtest.c index f9b7a6f..82bbae5 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -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; } diff --git a/lib/drmtest.h b/lib/drmtest.h index 96fbf1a..ea5e502 100644 --- a/lib/drmtest.h +++ b/lib/drmtest.h @@ -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))) diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c index 518435c..325066e 100644 --- a/lib/intel_batchbuffer.c +++ b/lib/intel_batchbuffer.c @@ -32,6 +32,7 @@ #include #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); }