#include <stdio.h>
#include <string.h>
-#include "i915_drm.h"
+#include <errno.h>
+
+#include "ioctl_wrappers.h"
#include "drmtest.h"
struct local_drm_i915_reg_read {
#define REG_READ_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x31, struct local_drm_i915_reg_read)
-static void handle_bad(int ret, int expected, const char *desc)
-{
- if (ret != 0 && errno != expected) {
- fprintf(stderr, "%s - errno was %d, but should have been %d\n",
- desc, errno, expected);
- igt_fail(1);
- } else if (ret == 0) {
- fprintf(stderr, "%s - Command succeeded, but should have failed\n",
- desc);
- igt_fail(1);
- }
-}
-
static uint64_t timer_query(int fd)
{
struct local_drm_i915_reg_read reg_read;
reg_read.offset = 0x2358;
- if (drmIoctl(fd, REG_READ_IOCTL, ®_read)) {
- perror("positive test case failed: ");
- igt_fail(1);
- }
+ igt_fail_on_f(drmIoctl(fd, REG_READ_IOCTL, ®_read),
+ "positive test case failed: ");
return reg_read.val;
}
-int main(int argc, char *argv[])
+igt_simple_main
{
struct local_drm_i915_reg_read reg_read;
- int fd;
+ int fd, ret;
fd = drm_open_any();
reg_read.offset = 0x2358;
- if (drmIoctl(fd, REG_READ_IOCTL, ®_read)) {
- if (errno == EINVAL)
- igt_skip();
- igt_fail(1);
- }
+ ret = drmIoctl(fd, REG_READ_IOCTL, ®_read);
+ igt_assert(ret == 0 || errno == EINVAL);
+ igt_require(ret == 0);
reg_read.val = timer_query(fd);
sleep(1);
- if (timer_query(fd) == reg_read.val) {
- fprintf(stderr, "Timer isn't moving, probably busted\n");
- igt_fail(1);
- }
+ /* Check that timer is moving and isn't busted. */
+ igt_assert(timer_query(fd) != reg_read.val);
/* bad reg */
reg_read.offset = 0x12345678;
- handle_bad(drmIoctl(fd, REG_READ_IOCTL, ®_read),
- EINVAL, "bad register");
+ ret = drmIoctl(fd, REG_READ_IOCTL, ®_read);
+
+ igt_assert(ret != 0 && errno == EINVAL);
close(fd);
- igt_success();
}