From bd927662fcfb1443c5982fb04cc694f78e1c8d53 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Wed, 24 Jul 2013 07:37:45 +0200 Subject: [PATCH] tests/gem_flink_race: count leaked objects And fail the test if the leak count is bigger than 0. Signed-off-by: Daniel Vetter --- tests/gem_flink_race.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/gem_flink_race.c b/tests/gem_flink_race.c index 47544bd..612f39e 100644 --- a/tests/gem_flink_race.c +++ b/tests/gem_flink_race.c @@ -24,6 +24,7 @@ * Daniel Vetter */ +#define _GNU_SOURCE #include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include #include "drmtest.h" #include "i915_drm.h" @@ -64,15 +66,35 @@ static void *thread_fn(void *p) return (void *)0; } +static int get_object_count(const char *path) +{ + FILE *file; + int ret, scanned; + file = fopen(path, "r"); + + scanned = fscanf(file, "%i objects,", &ret); + assert(scanned == 1); + + return ret; +} + int main(int argc, char **argv) { int num_threads; pthread_t *threads; int r, i; void *status; + int device = drm_get_card(0); + int old_object_count, new_object_count; + char *path; drmtest_skip_on_simulation(); + r = asprintf(&path, "/sys/kernel/debug/dri/%d/i915_gem_objects", device); + assert(r != -1); + + old_object_count = get_object_count(path); + num_threads = sysconf(_SC_NPROCESSORS_ONLN) - 1; if (!num_threads) num_threads = 1; @@ -109,5 +131,9 @@ int main(int argc, char **argv) close(fd); - return 0; + new_object_count = get_object_count(path); + + printf("leaked %d objects\n", new_object_count - old_object_count); + + return new_object_count - old_object_count > 0 ? 1 : 0; } -- 2.7.4