diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-08-07 19:01:23 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-08-12 14:46:40 +0200 |
commit | 370c9897230b4d4973d0a2ab641901081108d97b (patch) | |
tree | 4c8294a71fe9d2232335c4b66d19b0e4efae18ce /lib | |
parent | 24617ef82a4c58766675b3f1e4c194ca37fe9744 (diff) |
lib/core: Add optional reason for timeout failure
"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@virtuousgeek.org>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_core.c | 12 | ||||
-rw-r--r-- | lib/igt_core.h | 3 | ||||
-rw-r--r-- | lib/igt_debugfs.c | 4 | ||||
-rw-r--r-- | lib/tests/igt_timeout.c | 2 |
4 files changed, 15 insertions, 6 deletions
diff --git a/lib/igt_core.c b/lib/igt_core.c index af3d8731..e2c2502b 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 83eac02b..1a324ee8 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 568154ac..6180a2aa 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 8affa61f..d228041d 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); } |