"Timed out" isn't a terribly informative message, allow users to set something more informative. Inspired by a request from Jesse. Cc: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> --- lib/igt_core.c | 12 ++++++++++-- lib/igt_core.h | 3 ++- lib/igt_debugfs.c | 4 ++-- lib/tests/igt_timeout.c | 2 +- tests/kms_flip.c | 4 ++-- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/igt_core.c b/lib/igt_core.c index af3d87316857..e2c2502bd147 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -1748,9 +1748,13 @@ out: free(line); } +static const char *timeout_op; static void igt_alarm_handler(int signal) { - igt_info("Timed out\n"); + if (timeout_op) + igt_info("Timed out: %s\n", timeout_op); + else + igt_info("Timed out\n"); /* exit with failure status */ igt_fail(IGT_EXIT_FAILURE); @@ -1759,6 +1763,7 @@ static void igt_alarm_handler(int signal) /** * igt_set_timeout: * @seconds: number of seconds before timeout + * @op: Optional string to explain what operation has timed out in the debug log * * Fail a test and exit with #IGT_EXIT_FAILURE status after the specified * number of seconds have elapsed. If the current test has subtests and the @@ -1768,7 +1773,8 @@ static void igt_alarm_handler(int signal) * Any previous timer is cancelled and no timeout is scheduled if @seconds is * zero. */ -void igt_set_timeout(unsigned int seconds) +void igt_set_timeout(unsigned int seconds, + const char *op) { struct sigaction sa; @@ -1776,6 +1782,8 @@ void igt_set_timeout(unsigned int seconds) sigemptyset(&sa.sa_mask); sa.sa_flags = 0; + timeout_op = op; + if (seconds == 0) sigaction(SIGALRM, NULL, NULL); else diff --git a/lib/igt_core.h b/lib/igt_core.h index 83eac02b28bf..1a324ee85514 100644 --- a/lib/igt_core.h +++ b/lib/igt_core.h @@ -732,7 +732,8 @@ extern enum igt_log_level igt_log_level; } while (0) -void igt_set_timeout(unsigned int seconds); +void igt_set_timeout(unsigned int seconds, + const char *op); FILE *__igt_fopen_data(const char* igt_srcdir, const char* igt_datadir, const char* filename); diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c index 568154ac0e80..6180a2aa56db 100644 --- a/lib/igt_debugfs.c +++ b/lib/igt_debugfs.c @@ -463,9 +463,9 @@ static bool read_one_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out) ssize_t bytes_read; char buf[pipe_crc->buffer_len]; - igt_set_timeout(5); + igt_set_timeout(5, "CRC reading"); bytes_read = read(pipe_crc->crc_fd, &buf, pipe_crc->line_len); - igt_set_timeout(0); + igt_set_timeout(0, NULL); igt_assert_eq(bytes_read, pipe_crc->line_len); buf[bytes_read] = '\0'; diff --git a/lib/tests/igt_timeout.c b/lib/tests/igt_timeout.c index 8affa61f3d79..d228041d493b 100644 --- a/lib/tests/igt_timeout.c +++ b/lib/tests/igt_timeout.c @@ -3,6 +3,6 @@ igt_simple_main { - igt_set_timeout(1); + igt_set_timeout(1, "Testcase"); sleep(5); } diff --git a/tests/kms_flip.c b/tests/kms_flip.c index 25c924305c32..214cd696fd2f 100644 --- a/tests/kms_flip.c +++ b/tests/kms_flip.c @@ -1614,9 +1614,9 @@ static void test_nonblocking_read(int in) } igt_require(ret != -1); - igt_set_timeout(5); + igt_set_timeout(5, "Nonblocking DRM fd reading"); ret = read(fd, buffer, sizeof(buffer)); - igt_set_timeout(0); + igt_set_timeout(0, NULL); igt_assert_eq(ret, -1); igt_assert_eq(errno, EAGAIN); -- 2.5.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx