tests/gem_ctx_basic: Use igt_require

... instead of threading the 77 return value through threads. Even
better would be to check for requirements in the single-threaded setup
part of the test, since now it's done by multiple threads in parallel
and will result in interleaved and multiplied output on stdout.
Whatever.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Daniel Vetter 2013-08-15 13:47:15 +02:00
parent 176011eea7
commit 610630622b

View File

@ -40,7 +40,6 @@ int iter = 10000;
/* globals */ /* globals */
pthread_t *threads; pthread_t *threads;
int *returns;
int devid; int devid;
int fd; int fd;
@ -75,11 +74,7 @@ static void *work(void *arg)
bufmgr = drm_intel_bufmgr_gem_init(td_fd, 4096); bufmgr = drm_intel_bufmgr_gem_init(td_fd, 4096);
batch = intel_batchbuffer_alloc(bufmgr, devid); batch = intel_batchbuffer_alloc(bufmgr, devid);
context = drm_intel_gem_context_create(bufmgr); context = drm_intel_gem_context_create(bufmgr);
igt_require(context);
if (!context) {
returns[thread_id] = 77;
goto out;
}
for (i = 0; i < iter; i++) { for (i = 0; i < iter; i++) {
struct scratch_buf src, dst; struct scratch_buf src, dst;
@ -107,7 +102,7 @@ out:
if (multiple_fds) if (multiple_fds)
close(td_fd); close(td_fd);
pthread_exit(&returns[thread_id]); pthread_exit(NULL);
} }
static void parse(int argc, char *argv[]) static void parse(int argc, char *argv[])
@ -151,7 +146,6 @@ int main(int argc, char *argv[])
parse(argc, argv); parse(argc, argv);
threads = calloc(num_contexts, sizeof(*threads)); threads = calloc(num_contexts, sizeof(*threads));
returns = calloc(num_contexts, sizeof(*returns));
for (i = 0; i < num_contexts; i++) for (i = 0; i < num_contexts; i++)
pthread_create(&threads[i], NULL, work, &i); pthread_create(&threads[i], NULL, work, &i);
@ -159,13 +153,9 @@ int main(int argc, char *argv[])
for (i = 0; i < num_contexts; i++) { for (i = 0; i < num_contexts; i++) {
int thread_status, ret; int thread_status, ret;
void *retval; void *retval;
ret = pthread_join(threads[i], &retval); igt_assert(pthread_join(threads[i], &retval) == 0);
thread_status = *(int *)retval;
if (!ret && thread_status)
igt_fail(thread_status);
} }
free(returns);
free(threads); free(threads);
close(fd); close(fd);