vc4: Switch from errx() to fprintf() and abort().
authorEric Anholt <eric@anholt.net>
Thu, 25 Sep 2014 23:38:38 +0000 (16:38 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 25 Sep 2014 23:41:25 +0000 (16:41 -0700)
These are pretty catastrophic, "should never happen" failure paths (though
4 tests in piglit hit them currently, due to a single bug).  An abort()
that you can gdb on easily is probably more useful than a clean exit,
particularly since a bug in piglit framework right now is causing early
exit(1)s to simply not be recorded in the results at all.

src/gallium/drivers/vc4/vc4_bufmgr.c
src/gallium/drivers/vc4/vc4_context.c

index 7664d860995400dd1234909ec4d4837080263e68..33592e84527022e986a9f41bd1d59493257b4729 100644 (file)
@@ -52,8 +52,10 @@ vc4_bo_alloc(struct vc4_screen *screen, uint32_t size, const char *name)
         create.height = (size + 127) / 128;
 
         int ret = drmIoctl(screen->fd, DRM_IOCTL_MODE_CREATE_DUMB, &create);
-        if (ret != 0)
-                errx(1, "create ioctl");
+        if (ret != 0) {
+                fprintf(stderr, "create ioctl failure\n");
+                abort();
+        }
 
         bo->handle = create.handle;
         assert(create.size >= size);
@@ -162,14 +164,17 @@ vc4_bo_map(struct vc4_bo *bo)
         memset(&map, 0, sizeof(map));
         map.handle = bo->handle;
         ret = drmIoctl(bo->screen->fd, DRM_IOCTL_MODE_MAP_DUMB, &map);
-        if (ret != 0)
-                errx(1, "map ioctl");
+        if (ret != 0) {
+                fprintf(stderr, "map ioctl failure\n");
+                abort();
+        }
 
         bo->map = mmap(NULL, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED,
                        bo->screen->fd, map.offset);
         if (bo->map == MAP_FAILED) {
-                errx(1, "mmap of bo %d (offset 0x%016llx, size %d) failed\n",
-                     bo->handle, (long long)map.offset, bo->size);
+                fprintf(stderr, "mmap of bo %d (offset 0x%016llx, size %d) failed\n",
+                        bo->handle, (long long)map.offset, bo->size);
+                abort();
         }
 
         return bo->map;
index 13f0ef0158c97fab00570cb8e2bbcac673e0a287..5bb95fd46d258f7545b16848d04d119a307a4915 100644 (file)
@@ -248,8 +248,10 @@ vc4_flush(struct pipe_context *pctx)
 #else
                 ret = vc4_simulator_flush(vc4, &submit);
 #endif
-                if (ret)
-                        errx(1, "VC4 submit failed\n");
+                if (ret) {
+                        fprintf(stderr, "VC4 submit failed\n");
+                        abort();
+                }
         }
 
         vc4_reset_cl(&vc4->bcl);