*
*/
+#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <assert.h>
#include <fcntl.h>
#include <inttypes.h>
#include <errno.h>
#include <sys/stat.h>
+#include <sys/ioctl.h>
#include "drm.h"
-#include "i915_drm.h"
+#include "ioctl_wrappers.h"
+#include "drmtest.h"
static void
test_bad_close(int fd)
{
- struct drm_gem_close close;
+ struct drm_gem_close close_bo;
int ret;
- printf("Testing error return on bad close ioctl.\n");
+ igt_info("Testing error return on bad close ioctl.\n");
- close.handle = 0x10101010;
- ret = ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close);
+ close_bo.handle = 0x10101010;
+ ret = ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close_bo);
- assert(ret == -1 && errno == EINVAL);
+ igt_assert(ret == -1 && errno == EINVAL);
}
static void
test_create_close(int fd)
{
- struct drm_i915_gem_create create;
- struct drm_gem_close close;
- int ret;
+ uint32_t handle;
- printf("Testing creating and closing an object.\n");
+ igt_info("Testing creating and closing an object.\n");
- memset(&create, 0, sizeof(create));
- create.size = 16 * 1024;
- ret = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
- assert(ret == 0);
+ handle = gem_create(fd, 16*1024);
- close.handle = create.handle;
- ret = ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close);
+ gem_close(fd, handle);
}
static void
test_create_fd_close(int fd)
{
- struct drm_i915_gem_create create;
- int ret;
+ igt_info("Testing closing with an object allocated.\n");
- printf("Testing closing with an object allocated.\n");
-
- memset(&create, 0, sizeof(create));
- create.size = 16 * 1024;
- ret = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
- assert(ret == 0);
+ gem_create(fd, 16*1024);
+ /* leak it */
close(fd);
}
-int main(int argc, char **argv)
-{
- int fd;
+int fd;
- fd = drm_open_any();
-
- test_bad_close(fd);
- test_create_close(fd);
- test_create_fd_close(fd);
-
- return 0;
+igt_main
+{
+ igt_fixture
+ fd = drm_open_any();
+
+ igt_subtest("bad-close")
+ test_bad_close(fd);
+ igt_subtest("create-close")
+ test_create_close(fd);
+ igt_subtest("create-fd-close")
+ test_create_fd_close(fd);
}