Export 2 functions, igt_signal_helper_get_num and
igt_signal_helper_get_hz.

This will allow tests to measure how much time in a test was spent
in a uninterruptible state, which is useful when testing whether
certain ioctl's can be interrupted or not.

Signed-off-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
---
 lib/igt_aux.c | 30 +++++++++++++++++++++++++++---
 lib/igt_aux.h |  2 ++
 2 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 86a213c2032f..265e43f399e7 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -275,7 +275,7 @@ bool __igt_sigiter_continue(struct __igt_sigiter *iter, 
bool enable)
 }
 
 static struct igt_helper_process signal_helper;
-long long int sig_stat;
+static int64_t sig_stat;
 static void __attribute__((noreturn)) signal_helper_process(pid_t pid)
 {
        /* Interrupt the parent process at 500Hz, just to be annoying */
@@ -314,6 +314,9 @@ void igt_fork_signal_helper(void)
        if (igt_only_list_subtests())
                return;
 
+       /* Reset number of signalscaught */
+       sig_stat = 0;
+
        /* We pick SIGCONT as it is a "safe" signal - if we send SIGCONT to
         * an unexpecting process it spuriously wakes up and does nothing.
         * Most other signals (e.g. SIGUSR1) cause the process to die if they
@@ -348,8 +351,29 @@ void igt_stop_signal_helper(void)
                return;
 
        igt_stop_helper(&signal_helper);
+}
 
-       sig_stat = 0;
+/**
+ * igt_signal_helper_get_num:
+ *
+ * Return the amount of signals generated since the last time
+ * igt_fork_signal_helper() was called.
+ *
+ * This is reset to 0 on every call to igt_fork_signal_helper.
+ */
+int64_t igt_signal_helper_get_num(void)
+{
+       return sig_stat;
+}
+
+/**
+ * igt_signal_helper_get_hz:
+ *
+ * Return the approximate amount of signals generated per second.
+ */
+int igt_signal_helper_get_hz(void)
+{
+       return 50;
 }
 
 static struct igt_helper_process shrink_helper;
@@ -357,7 +381,7 @@ static void __attribute__((noreturn)) 
shrink_helper_process(int fd, pid_t pid)
 {
        while (1) {
                igt_drop_caches_set(fd, DROP_SHRINK_ALL);
-               usleep(1000 * 1000 / 50);
+               usleep(1000 * 1000 / igt_signal_helper_get_hz());
                if (kill(pid, 0)) /* Parent has died, so must we. */
                        exit(0);
        }
diff --git a/lib/igt_aux.h b/lib/igt_aux.h
index 499a16796ebb..7e080089dcbc 100644
--- a/lib/igt_aux.h
+++ b/lib/igt_aux.h
@@ -55,6 +55,8 @@ extern int num_trash_bos;
 /* generally useful helpers */
 void igt_fork_signal_helper(void);
 void igt_stop_signal_helper(void);
+int64_t igt_signal_helper_get_num(void);
+int igt_signal_helper_get_hz(void);
 
 void igt_fork_shrink_helper(int fd);
 void igt_stop_shrink_helper(void);
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to