[Intel-gfx] [PATCH 2/3] lib: consolidate pipe crc exit handler
Daniel Vetter
daniel.vetter at ffwll.ch
Thu Oct 31 16:25:54 CET 2013
No need to sprinkle this all over:
- exit handlers will only be registered once
- they're always called when exiting, so no need to explictly call
them.
This allows us to hide all the pipe crc cleanup in the library.
Cc: Damien Lespiau <damien.lespiau at intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
lib/igt_debugfs.c | 52 ++++++++++++++++++++++++++----------------------
lib/igt_debugfs.h | 1 -
tests/debugfs_pipe_crc.c | 7 -------
tests/kms_cursor_crc.c | 7 -------
4 files changed, 28 insertions(+), 39 deletions(-)
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index 7efb415..b41db12 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -177,6 +177,32 @@ static bool igt_pipe_crc_do_start(igt_pipe_crc_t *pipe_crc)
return true;
}
+static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
+{
+ char buf[32];
+
+ sprintf(buf, "pipe %c none", pipe_name(pipe));
+ write(fd, buf, strlen(buf));
+}
+
+static void igt_pipe_crc_reset(void)
+{
+ igt_debugfs_t debugfs;
+ int fd;
+
+ igt_debugfs_init(&debugfs);
+ fd = igt_debugfs_open(&debugfs, "i915_display_crc_ctl", O_WRONLY);
+
+ igt_pipe_crc_pipe_off(fd, PIPE_A);
+ igt_pipe_crc_pipe_off(fd, PIPE_B);
+ igt_pipe_crc_pipe_off(fd, PIPE_C);
+}
+
+static void pipe_crc_exit_handler(int sig)
+{
+ igt_pipe_crc_reset();
+}
+
igt_pipe_crc_t *
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
enum intel_pipe_crc_source source)
@@ -184,6 +210,8 @@ 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));
+
pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
pipe_crc->ctl_fd = igt_debugfs_open(debugfs,
@@ -211,30 +239,6 @@ igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
return pipe_crc;
}
-static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
-{
- char buf[32];
-
- sprintf(buf, "pipe %c none", pipe_name(pipe));
- write(fd, buf, strlen(buf));
-}
-
-/*
- * Turn off everything
- */
-void igt_pipe_crc_reset(void)
-{
- igt_debugfs_t debugfs;
- int fd;
-
- igt_debugfs_init(&debugfs);
- fd = igt_debugfs_open(&debugfs, "i915_display_crc_ctl", O_WRONLY);
-
- igt_pipe_crc_pipe_off(fd, PIPE_A);
- igt_pipe_crc_pipe_off(fd, PIPE_B);
- igt_pipe_crc_pipe_off(fd, PIPE_C);
-}
-
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
{
if (!pipe_crc)
diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
index 4e82a2c..c2810ee 100644
--- a/lib/igt_debugfs.h
+++ b/lib/igt_debugfs.h
@@ -73,7 +73,6 @@ char *igt_crc_to_string(igt_crc_t *crc);
igt_pipe_crc_t *
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
enum intel_pipe_crc_source source);
-void igt_pipe_crc_reset(void);
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc);
bool igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc);
void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc);
diff --git a/tests/debugfs_pipe_crc.c b/tests/debugfs_pipe_crc.c
index 7f51724..fe14c6c 100644
--- a/tests/debugfs_pipe_crc.c
+++ b/tests/debugfs_pipe_crc.c
@@ -206,11 +206,6 @@ static void test_read_crc(data_t *data, int pipe, unsigned flags)
}
-static void exit_handler(int sig)
-{
- igt_pipe_crc_reset();
-}
-
int main(int argc, char **argv)
{
data_t data = {0, };
@@ -224,7 +219,6 @@ int main(int argc, char **argv)
data.drm_fd = drm_open_any();
do_or_die(igt_set_vt_graphics_mode());
- do_or_die(igt_install_exit_handler(exit_handler));
display_init(&data);
@@ -260,7 +254,6 @@ int main(int argc, char **argv)
}
igt_fixture {
- igt_pipe_crc_reset();
display_fini(&data);
fclose(data.ctl);
}
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index cddfe10..c82d3e7 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -304,11 +304,6 @@ static void run_test(data_t *data, enum cursor_type cursor_type, bool onscreen)
igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
}
-static void exit_handler(int sig)
-{
- igt_pipe_crc_reset();
-}
-
static void create_cursor_fb(data_t *data,
enum cursor_type cursor_type,
double r, double g, double b, double a)
@@ -340,7 +335,6 @@ int main(int argc, char **argv)
data.drm_fd = drm_open_any();
do_or_die(igt_set_vt_graphics_mode());
- do_or_die(igt_install_exit_handler(exit_handler));
igt_debugfs_init(&data.debugfs);
data.ctl = igt_debugfs_fopen(&data.debugfs,
@@ -378,7 +372,6 @@ int main(int argc, char **argv)
run_test(&data, BLACK_INVISIBLE, false);
igt_fixture {
- igt_pipe_crc_reset();
display_fini(&data);
fclose(data.ctl);
}
--
1.8.4.rc3
More information about the Intel-gfx
mailing list