From: Tim Gore <tim.gore@xxxxxxxxx> Quite a few single tests do not use the igt_simple_main macro because they want access to argc/argv. So change the igt_simple_main macro to pass these arguments through to the "__real_mainxxx" function, and change these tests to use the macro. Also rename the igt_simple_init to __igt_simple_init to indicate that it should be accessed via the macros Signed-off-by: Tim Gore <tim.gore@xxxxxxxxx> --- lib/igt_core.c | 4 ++-- lib/igt_core.h | 19 +++++++++++-------- tests/gem_ctx_basic.c | 6 +----- tests/gem_exec_blt.c | 5 +---- tests/gem_gtt_speed.c | 7 ++----- tests/gem_hang.c | 5 +---- tests/gem_render_copy.c | 4 +--- tests/gem_render_linear_blits.c | 9 +++------ tests/gem_render_tiled_blits.c | 7 ++----- tests/gem_seqno_wrap.c | 11 ++++------- tests/gem_stress.c | 5 +---- tests/gen3_mixed_blits.c | 5 +---- tests/gen3_render_linear_blits.c | 5 +---- tests/gen3_render_mixed_blits.c | 5 +---- tests/gen3_render_tiledx_blits.c | 5 +---- tests/gen3_render_tiledy_blits.c | 5 +---- tests/igt_simulation.c | 2 +- 17 files changed, 35 insertions(+), 74 deletions(-) diff --git a/lib/igt_core.c b/lib/igt_core.c index 7ac7ebe..b822bc9 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -450,7 +450,7 @@ void igt_subtest_init(int argc, char **argv) } /** - * igt_simple_init: + * __igt_simple_init: * * This initializes a simple test without any support for subtests. * @@ -458,7 +458,7 @@ void igt_subtest_init(int argc, char **argv) * #igt_simple_main block instead of stitching the tests's main() function together * manually. */ -void igt_simple_init(void) +void __igt_simple_init(void) { print_version(); diff --git a/lib/igt_core.h b/lib/igt_core.h index e252eba..75ee60c 100644 --- a/lib/igt_core.h +++ b/lib/igt_core.h @@ -166,23 +166,26 @@ bool igt_only_list_subtests(void); * * Init for simple tests without subtests */ -void igt_simple_init(void); +void __igt_simple_init(void); /** * igt_simple_main: * * This is a magic control flow block used instead of a main() function for - * simple tests. Open-coding the main() function is only recommended if - * the test needs to parse additional cmdline arguments of its own. + * simple tests. It calls __igt_simple_init() to do basic setup + * and passes argc/v through to the "__real_main" function that + * follows the macro. + * Open-coding the main() function is only recommended if there is a + * requirement that cannot be met otherwise */ #define igt_simple_main \ - static void igt_tokencat(__real_main, __LINE__)(void); \ + static void igt_tokencat(__real_main, __LINE__)(int argc, char **argv); \ int main(int argc, char **argv) { \ - igt_simple_init(); \ - igt_tokencat(__real_main, __LINE__)(); \ - exit(0); \ + __igt_simple_init(); \ + igt_tokencat(__real_main, __LINE__)(argc, argv); \ + igt_exit(); \ } \ - static void igt_tokencat(__real_main, __LINE__)(void) \ + static void igt_tokencat(__real_main, __LINE__)(int argc, char **argv) \ __attribute__((format(printf, 1, 2))) void igt_skip(const char *f, ...) __attribute__((noreturn)); diff --git a/tests/gem_ctx_basic.c b/tests/gem_ctx_basic.c index 3e9b688..fe770ea 100644 --- a/tests/gem_ctx_basic.c +++ b/tests/gem_ctx_basic.c @@ -145,12 +145,10 @@ static void parse(int argc, char *argv[]) } } -int main(int argc, char *argv[]) +igt_simple_main { int i; - igt_simple_init(); - fd = drm_open_any_render(); devid = intel_get_drm_devid(fd); @@ -173,6 +171,4 @@ int main(int argc, char *argv[]) free(threads); close(fd); - - return 0; } diff --git a/tests/gem_exec_blt.c b/tests/gem_exec_blt.c index 3bcef18..3d092fe 100644 --- a/tests/gem_exec_blt.c +++ b/tests/gem_exec_blt.c @@ -253,12 +253,10 @@ static void run(int object_size) close(fd); } -int main(int argc, char **argv) +igt_simple_main { int i; - igt_simple_init(); - igt_skip_on_simulation(); if (argc > 1) { @@ -270,5 +268,4 @@ int main(int argc, char **argv) } else run(OBJECT_SIZE); - return 0; } diff --git a/tests/gem_gtt_speed.c b/tests/gem_gtt_speed.c index 385eeb7..42c3694 100644 --- a/tests/gem_gtt_speed.c +++ b/tests/gem_gtt_speed.c @@ -50,7 +50,7 @@ static double elapsed(const struct timeval *start, return (1e6*(end->tv_sec - start->tv_sec) + (end->tv_usec - start->tv_usec))/loop; } -int main(int argc, char **argv) +igt_simple_main { struct timeval start, end; uint8_t *buf; @@ -59,15 +59,13 @@ int main(int argc, char **argv) int loop, i, tiling; int fd; - igt_simple_init(); - igt_skip_on_simulation(); if (argc > 1) size = atoi(argv[1]); if (size == 0) { igt_warn("Invalid object size specified\n"); - return 1; + igt_fail(1); } buf = malloc(size); @@ -329,5 +327,4 @@ int main(int argc, char **argv) gem_close(fd, handle); close(fd); - return 0; } diff --git a/tests/gem_hang.c b/tests/gem_hang.c index 6248244..a4f4d10 100644 --- a/tests/gem_hang.c +++ b/tests/gem_hang.c @@ -68,12 +68,10 @@ gpu_hang(void) intel_batchbuffer_flush(batch); } -int main(int argc, char **argv) +igt_simple_main { int fd; - igt_simple_init(); - igt_assert_f(argc == 2, "usage: %s <disabled pipe number>\n", argv[0]); @@ -93,5 +91,4 @@ int main(int argc, char **argv) close(fd); - return 0; } diff --git a/tests/gem_render_copy.c b/tests/gem_render_copy.c index fd26b43..12dd90d 100644 --- a/tests/gem_render_copy.c +++ b/tests/gem_render_copy.c @@ -117,7 +117,7 @@ scratch_buf_check(data_t *data, struct igt_buf *buf, int x, int y, color, val, x, y); } -int main(int argc, char **argv) +igt_simple_main { data_t data = {0, }; struct intel_batchbuffer *batch = NULL; @@ -127,7 +127,6 @@ int main(int argc, char **argv) int opt_dump_png = false; int opt_dump_aub = igt_aub_dump_enabled(); - igt_simple_init(); while ((opt = getopt(argc, argv, "d")) != -1) { switch (opt) { @@ -189,5 +188,4 @@ int main(int argc, char **argv) scratch_buf_check(&data, &dst, WIDTH - 10, HEIGHT - 10, SRC_COLOR); } - return 0; } diff --git a/tests/gem_render_linear_blits.c b/tests/gem_render_linear_blits.c index f847486..3b8c98f 100644 --- a/tests/gem_render_linear_blits.c +++ b/tests/gem_render_linear_blits.c @@ -81,7 +81,7 @@ check_bo(int fd, uint32_t handle, uint32_t val) } } -int main(int argc, char **argv) +igt_simple_main { drm_intel_bufmgr *bufmgr; struct intel_batchbuffer *batch; @@ -90,8 +90,6 @@ int main(int argc, char **argv) uint32_t start = 0; int i, j, fd, count; - igt_simple_init(); - fd = drm_open_any(); render_copy = igt_get_render_copyfunc(intel_get_drm_devid(fd)); @@ -110,7 +108,7 @@ int main(int argc, char **argv) count = 3 * gem_aperture_size(fd) / SIZE / 2; else if (count < 2) { igt_warn("count must be >= 2\n"); - return 1; + igt_fail(1); } if (count > intel_get_total_ram_mb() * 9 / 10) { @@ -154,7 +152,7 @@ int main(int argc, char **argv) check_bo(fd, bo[i]->handle, start_val[i]); if (igt_run_in_simulation()) - return 0; + return; igt_info("Cyclic blits, backward...\n"); for (i = 0; i < count * 4; i++) { @@ -201,5 +199,4 @@ int main(int argc, char **argv) for (i = 0; i < count; i++) check_bo(fd, bo[i]->handle, start_val[i]); - return 0; } diff --git a/tests/gem_render_tiled_blits.c b/tests/gem_render_tiled_blits.c index f63c57e..7ff8335 100644 --- a/tests/gem_render_tiled_blits.c +++ b/tests/gem_render_tiled_blits.c @@ -95,7 +95,7 @@ check_bo(struct intel_batchbuffer *batch, struct igt_buf *buf, uint32_t val) dri_bo_unmap(linear); } -int main(int argc, char **argv) +igt_simple_main { drm_intel_bufmgr *bufmgr; struct intel_batchbuffer *batch; @@ -105,8 +105,6 @@ int main(int argc, char **argv) int i, j, fd, count; uint32_t devid; - igt_simple_init(); - igt_skip_on_simulation(); fd = drm_open_any(); @@ -132,7 +130,7 @@ int main(int argc, char **argv) count = 3 * gem_aperture_size(fd) / SIZE / 2; else if (count < 2) { igt_warn("count must be >= 2\n"); - return 1; + igt_fail(1); } if (count > intel_get_total_ram_mb() * 9 / 10) { @@ -212,5 +210,4 @@ int main(int argc, char **argv) for (i = 0; i < count; i++) check_bo(batch, &buf[i], start_val[i]); - return 0; } diff --git a/tests/gem_seqno_wrap.c b/tests/gem_seqno_wrap.c index beda28b..8a54c2e 100644 --- a/tests/gem_seqno_wrap.c +++ b/tests/gem_seqno_wrap.c @@ -533,12 +533,9 @@ static void parse_options(int argc, char **argv) } } -int main(int argc, char **argv) +igt_simple_main { int wcount = 0; - int r = -1; - - igt_simple_init(); parse_options(argc, argv); @@ -563,8 +560,8 @@ int main(int argc, char **argv) if (options.rounds == wcount) { igt_debug("done %d wraps successfully\n", wcount); - return 0; } - - return r; + else { + igt_fail(-1); + } } diff --git a/tests/gem_stress.c b/tests/gem_stress.c index 2ccb6fc..35ed32f 100644 --- a/tests/gem_stress.c +++ b/tests/gem_stress.c @@ -860,13 +860,11 @@ static void check_render_copyfunc(void) } -int main(int argc, char **argv) +igt_simple_main { int i, j; unsigned *current_permutation, *tmp_permutation; - igt_simple_init(); - drm_fd = drm_open_any(); devid = intel_get_drm_devid(drm_fd); @@ -925,5 +923,4 @@ int main(int argc, char **argv) igt_stop_signal_helper(); - return 0; } diff --git a/tests/gen3_mixed_blits.c b/tests/gen3_mixed_blits.c index 75d61a5..f0a6b64 100644 --- a/tests/gen3_mixed_blits.c +++ b/tests/gen3_mixed_blits.c @@ -457,14 +457,12 @@ check_bo(int fd, uint32_t handle, uint32_t val) munmap(v, WIDTH*HEIGHT*4); } -int main(int argc, char **argv) +igt_simple_main { uint32_t *handle, *tiling, *start_val; uint32_t start = 0; int i, fd, count; - igt_simple_init(); - fd = drm_open_any(); igt_require(IS_GEN3(intel_get_drm_devid(fd))); @@ -533,5 +531,4 @@ int main(int argc, char **argv) check_bo(fd, handle[i], start_val[i]); igt_info("done\n"); - return 0; } diff --git a/tests/gen3_render_linear_blits.c b/tests/gen3_render_linear_blits.c index 7fe368d..60c0d0b 100644 --- a/tests/gen3_render_linear_blits.c +++ b/tests/gen3_render_linear_blits.c @@ -325,14 +325,12 @@ check_bo(int fd, uint32_t handle, uint32_t val) } } -int main(int argc, char **argv) +igt_simple_main { uint32_t *handle, *start_val; uint32_t start = 0; int i, fd, count; - igt_simple_init(); - fd = drm_open_any(); igt_require(IS_GEN3(intel_get_drm_devid(fd))); @@ -393,5 +391,4 @@ int main(int argc, char **argv) for (i = 0; i < count; i++) check_bo(fd, handle[i], start_val[i]); - return 0; } diff --git a/tests/gen3_render_mixed_blits.c b/tests/gen3_render_mixed_blits.c index 77ac0e2..68660a3 100644 --- a/tests/gen3_render_mixed_blits.c +++ b/tests/gen3_render_mixed_blits.c @@ -345,14 +345,12 @@ check_bo(int fd, uint32_t handle, uint32_t val) munmap(v, WIDTH*HEIGHT*4); } -int main(int argc, char **argv) +igt_simple_main { uint32_t *handle, *tiling, *start_val; uint32_t start = 0; int i, fd, count; - igt_simple_init(); - fd = drm_open_any(); igt_require(IS_GEN3(intel_get_drm_devid(fd))); @@ -421,5 +419,4 @@ int main(int argc, char **argv) check_bo(fd, handle[i], start_val[i]); igt_info("done\n"); - return 0; } diff --git a/tests/gen3_render_tiledx_blits.c b/tests/gen3_render_tiledx_blits.c index 95c0c96..d54d714 100644 --- a/tests/gen3_render_tiledx_blits.c +++ b/tests/gen3_render_tiledx_blits.c @@ -332,14 +332,12 @@ check_bo(int fd, uint32_t handle, uint32_t val) munmap(v, WIDTH*HEIGHT*4); } -int main(int argc, char **argv) +igt_simple_main { uint32_t *handle, *start_val; uint32_t start = 0; int i, fd, count; - igt_simple_init(); - fd = drm_open_any(); igt_require(IS_GEN3(intel_get_drm_devid(fd))); @@ -400,5 +398,4 @@ int main(int argc, char **argv) for (i = 0; i < count; i++) check_bo(fd, handle[i], start_val[i]); - return 0; } diff --git a/tests/gen3_render_tiledy_blits.c b/tests/gen3_render_tiledy_blits.c index 1b9a419..3ef08c8 100644 --- a/tests/gen3_render_tiledy_blits.c +++ b/tests/gen3_render_tiledy_blits.c @@ -332,14 +332,12 @@ check_bo(int fd, uint32_t handle, uint32_t val) munmap(v, WIDTH*HEIGHT*4); } -int main(int argc, char **argv) +igt_simple_main { uint32_t *handle, *start_val; uint32_t start = 0; int i, fd, count; - igt_simple_init(); - fd = drm_open_any(); igt_require(IS_GEN3(intel_get_drm_devid(fd))); @@ -407,5 +405,4 @@ int main(int argc, char **argv) check_bo(fd, handle[i], start_val[i]); igt_info("done\n"); - return 0; } diff --git a/tests/igt_simulation.c b/tests/igt_simulation.c index 15cbe64..6d8a59a 100644 --- a/tests/igt_simulation.c +++ b/tests/igt_simulation.c @@ -53,7 +53,7 @@ static int do_fork(void) assert(0); case 0: if (simple) { - igt_simple_init(); + __igt_simple_init(); igt_skip_on_simulation(); -- 1.9.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx