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 <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2012-03-29 12:45:59 +01:00
parent 9dbce0991f
commit b7bd1837cc
3 changed files with 23 additions and 29 deletions

View File

@ -78,7 +78,6 @@ void gem_quiescent_gpu(int fd)
uint32_t handle; uint32_t handle;
struct drm_i915_gem_execbuffer2 execbuf; struct drm_i915_gem_execbuffer2 execbuf;
struct drm_i915_gem_exec_object2 gem_exec[1]; struct drm_i915_gem_exec_object2 gem_exec[1];
int ret = 0;
handle = gem_create(fd, 4096); handle = gem_create(fd, 4096);
gem_write(fd, handle, 0, batch, sizeof(batch)); gem_write(fd, handle, 0, batch, sizeof(batch));
@ -104,10 +103,7 @@ void gem_quiescent_gpu(int fd)
execbuf.rsvd1 = 0; execbuf.rsvd1 = 0;
execbuf.rsvd2 = 0; execbuf.rsvd2 = 0;
ret = drmIoctl(fd, do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
DRM_IOCTL_I915_GEM_EXECBUFFER2,
&execbuf);
assert(ret == 0);
gem_sync(fd, handle); 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) void gem_close(int fd, uint32_t handle)
{ {
struct drm_gem_close close_bo; struct drm_gem_close close_bo;
int ret;
close_bo.handle = handle; close_bo.handle = handle;
ret = drmIoctl(fd, DRM_IOCTL_GEM_CLOSE, &close_bo); do_ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close_bo);
assert(ret == 0);
} }
void gem_write(int fd, uint32_t handle, uint32_t offset, const void *buf, uint32_t size) void gem_write(int fd, uint32_t handle, uint32_t offset, const void *buf, uint32_t size)
{ {
struct drm_i915_gem_pwrite gem_pwrite; struct drm_i915_gem_pwrite gem_pwrite;
int ret;
gem_pwrite.handle = handle; gem_pwrite.handle = handle;
gem_pwrite.offset = offset; gem_pwrite.offset = offset;
gem_pwrite.size = size; gem_pwrite.size = size;
gem_pwrite.data_ptr = (uintptr_t)buf; gem_pwrite.data_ptr = (uintptr_t)buf;
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_PWRITE, &gem_pwrite); do_ioctl(fd, DRM_IOCTL_I915_GEM_PWRITE, &gem_pwrite);
assert(ret == 0);
} }
void gem_read(int fd, uint32_t handle, uint32_t offset, void *buf, uint32_t length) void gem_read(int fd, uint32_t handle, uint32_t offset, void *buf, uint32_t length)
{ {
struct drm_i915_gem_pread gem_pread; struct drm_i915_gem_pread gem_pread;
int ret;
gem_pread.handle = handle; gem_pread.handle = handle;
gem_pread.offset = offset; gem_pread.offset = offset;
gem_pread.size = length; gem_pread.size = length;
gem_pread.data_ptr = (uintptr_t)buf; gem_pread.data_ptr = (uintptr_t)buf;
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_PREAD, &gem_pread); do_ioctl(fd, DRM_IOCTL_I915_GEM_PREAD, &gem_pread);
assert(ret == 0);
} }
void gem_set_domain(int fd, uint32_t handle, void gem_set_domain(int fd, uint32_t handle,
uint32_t read_domains, uint32_t write_domain) uint32_t read_domains, uint32_t write_domain)
{ {
struct drm_i915_gem_set_domain set_domain; struct drm_i915_gem_set_domain set_domain;
int ret;
set_domain.handle = handle; set_domain.handle = handle;
set_domain.read_domains = read_domains; set_domain.read_domains = read_domains;
set_domain.write_domain = write_domain; set_domain.write_domain = write_domain;
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); do_ioctl(fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain);
assert(ret == 0);
} }
void gem_sync(int fd, uint32_t handle) 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) uint32_t gem_create(int fd, int size)
{ {
struct drm_i915_gem_create create; struct drm_i915_gem_create create;
int ret;
create.handle = 0; create.handle = 0;
create.size = size; create.size = size;
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create); do_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
assert(ret == 0);
assert(create.handle); assert(create.handle);
return create.handle; return create.handle;
@ -285,7 +271,7 @@ uint64_t gem_aperture_size(int fd)
struct drm_i915_gem_get_aperture aperture; struct drm_i915_gem_get_aperture aperture;
aperture.aper_size = 256*1024*1024; 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; 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) int gem_madvise(int fd, uint32_t handle, int state)
{ {
struct drm_i915_gem_madvise madv; struct drm_i915_gem_madvise madv;
int ret;
madv.handle = handle; madv.handle = handle;
madv.madv = state; madv.madv = state;
madv.retained = 1; madv.retained = 1;
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_MADVISE, &madv); do_ioctl(fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);
assert(ret == 0);
return madv.retained; return madv.retained;
} }

View 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_init_aperture_trashers(drm_intel_bufmgr *bufmgr);
void drmtest_trash_aperture(void); void drmtest_trash_aperture(void);
void drmtest_cleanup_aperture_trashers(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)))

View File

@ -32,6 +32,7 @@
#include <assert.h> #include <assert.h>
#include "drm.h" #include "drm.h"
#include "drmtest.h"
#include "intel_batchbuffer.h" #include "intel_batchbuffer.h"
#include "intel_bufmgr.h" #include "intel_bufmgr.h"
#include "intel_chipset.h" #include "intel_chipset.h"
@ -78,7 +79,6 @@ void
intel_batchbuffer_flush_on_ring(struct intel_batchbuffer *batch, int ring) intel_batchbuffer_flush_on_ring(struct intel_batchbuffer *batch, int ring)
{ {
unsigned int used = batch->ptr - batch->buffer; unsigned int used = batch->ptr - batch->buffer;
int ret;
if (used == 0) if (used == 0)
return; return;
@ -101,13 +101,11 @@ intel_batchbuffer_flush_on_ring(struct intel_batchbuffer *batch, int ring)
batch->ptr += 4; batch->ptr += 4;
used = batch->ptr - batch->buffer; used = batch->ptr - batch->buffer;
ret = drm_intel_bo_subdata(batch->bo, 0, used, batch->buffer); do_or_die(drm_intel_bo_subdata(batch->bo, 0, used, batch->buffer));
assert(ret == 0);
batch->ptr = NULL; batch->ptr = NULL;
ret = drm_intel_bo_mrb_exec(batch->bo, used, NULL, 0, 0, ring); do_or_die(drm_intel_bo_mrb_exec(batch->bo, used, NULL, 0, 0, ring));
assert(ret == 0);
intel_batchbuffer_reset(batch); intel_batchbuffer_reset(batch);
} }