[Intel-gfx] [PATCH 3/3] lib: make igt_install_exit_handler never fail

Daniel Vetter daniel.vetter at ffwll.ch
Thu Oct 31 17:17:48 CET 2013


Most callers didn't bother checking, so just move the asserts into
the function itself.

Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
 lib/drmtest.c     | 15 +++++++--------
 lib/drmtest.h     |  2 +-
 lib/igt_debugfs.c |  2 +-
 tests/.gitignore  |  1 +
 tests/kms_flip.c  |  2 +-
 5 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 5887595..4285e27 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -2006,22 +2006,21 @@ static void fatal_sig_handler(int sig)
  * The handler will be passed the signal number if called due to a signal, or
  * 0 otherwise.
  */
-int igt_install_exit_handler(igt_exit_handler_t fn)
+void igt_install_exit_handler(igt_exit_handler_t fn)
 {
 	int i;
 
 	for (i = 0; i < exit_handler_count; i++)
 		if (exit_handler_fn[i] == fn)
-			return 0;
+			return;
 
-	if (exit_handler_count == MAX_EXIT_HANDLERS)
-		return -1;
+	igt_assert(exit_handler_count < MAX_EXIT_HANDLERS);
 
 	exit_handler_fn[exit_handler_count] = fn;
 	exit_handler_count++;
 
 	if (exit_handler_count > 1)
-		return 0;
+		return;
 
 	for (i = 0; i < ARRAY_SIZE(handled_signals); i++) {
 		if (install_sig_handler(handled_signals[i],
@@ -2032,12 +2031,12 @@ int igt_install_exit_handler(igt_exit_handler_t fn)
 	if (atexit(igt_atexit_handler))
 		goto err;
 
-	return 0;
+	return;
 err:
 	restore_all_sig_handler();
 	exit_handler_count--;
 
-	return -1;
+	igt_assert_f(0, "failed to install the signal handler\n");
 }
 
 void igt_disable_exit_handler(void)
@@ -2112,7 +2111,7 @@ static void restore_vt_mode_at_exit(int sig)
 
 void igt_set_vt_graphics_mode(void)
 {
-	do_or_die(igt_install_exit_handler(restore_vt_mode_at_exit));
+	igt_install_exit_handler(restore_vt_mode_at_exit);
 
 	igt_disable_exit_handler();
 	orig_vt_mode = set_vt_mode(KD_GRAPHICS);
diff --git a/lib/drmtest.h b/lib/drmtest.h
index 5b35545..a9fd0bc 100644
--- a/lib/drmtest.h
+++ b/lib/drmtest.h
@@ -399,7 +399,7 @@ uint32_t drm_format_to_bpp(uint32_t drm_format);
 typedef void (*igt_exit_handler_t)(int sig);
 
 /* reliable atexit helpers, also work when killed by a signal (if possible) */
-int igt_install_exit_handler(igt_exit_handler_t fn);
+void igt_install_exit_handler(igt_exit_handler_t fn);
 void igt_enable_exit_handler(void);
 void igt_disable_exit_handler(void);
 
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index b41db12..2364565 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -210,7 +210,7 @@ igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
 	igt_pipe_crc_t *pipe_crc;
 	char buf[128];
 
-	do_or_die(igt_install_exit_handler(pipe_crc_exit_handler));
+	igt_install_exit_handler(pipe_crc_exit_handler);
 
 	pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
 
diff --git a/tests/.gitignore b/tests/.gitignore
index 294123c..6fcb872 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -98,6 +98,7 @@ getstats
 getversion
 igt_fork_helper
 kms_addfb
+kms_cursor_crc
 kms_flip
 kms_render
 kms_setmode
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index e8d3e22..3583bb9 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1494,7 +1494,7 @@ int main(int argc, char **argv)
 		drm_fd = drm_open_any();
 
 		igt_set_vt_graphics_mode();
-		do_or_die(igt_install_exit_handler(kms_flip_exit_handler));
+		igt_install_exit_handler(kms_flip_exit_handler);
 		get_timestamp_format();
 
 		bufmgr = drm_intel_bufmgr_gem_init(drm_fd, 4096);
-- 
1.8.4.rc3




More information about the Intel-gfx mailing list