@@ -1771,7 +1771,8 @@ static void igt_alarm_handler(int signal)
* marked as failed.
*
* Any previous timer is cancelled and no timeout is scheduled if @seconds is
- * zero.
+ * zero. But for clarity the timeout set with this function should be cleared
+ * with igt_reset_timeout().
*/
void igt_set_timeout(unsigned int seconds,
const char *op)
@@ -1792,6 +1793,17 @@ void igt_set_timeout(unsigned int seconds,
alarm(seconds);
}
+/**
+ * igt_reset_timeout - reset timeout to default
+ *
+ * This function resets a timeout set by igt_set_timeout() and disables any
+ * timer set up by the former function.
+ */
+void igt_reset_timeout(void)
+{
+ igt_set_timeout(0, NULL);
+}
+
FILE *__igt_fopen_data(const char* igt_srcdir, const char* igt_datadir,
const char* filename)
{
@@ -735,6 +735,8 @@ extern enum igt_log_level igt_log_level;
void igt_set_timeout(unsigned int seconds,
const char *op);
+void igt_reset_timeout(void);
+
FILE *__igt_fopen_data(const char* igt_srcdir, const char* igt_datadir,
const char* filename);
/**
@@ -465,7 +465,7 @@ static bool read_one_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
igt_set_timeout(5, "CRC reading");
bytes_read = read(pipe_crc->crc_fd, &buf, pipe_crc->line_len);
- igt_set_timeout(0, NULL);
+ igt_reset_timeout();
igt_assert_eq(bytes_read, pipe_crc->line_len);
buf[bytes_read] = '\0';
@@ -1616,7 +1616,8 @@ static void test_nonblocking_read(int in)
igt_set_timeout(5, "Nonblocking DRM fd reading");
ret = read(fd, buffer, sizeof(buffer));
- igt_set_timeout(0, NULL);
+ igt_reset_timeout();
+
igt_assert_eq(ret, -1);
igt_assert_eq(errno, EAGAIN);
Convenience wrapper suggested by Chris for igt_set_timeout(0, NULL). v2: While at it add an empty line in kms_flip to make set/reset_timeout a visual block. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> --- lib/igt_core.c | 14 +++++++++++++- lib/igt_core.h | 2 ++ lib/igt_debugfs.c | 2 +- tests/kms_flip.c | 3 ++- 4 files changed, 18 insertions(+), 3 deletions(-)