[PATCH i-g-t 1/3] lib/igt_aux: Export statistics of signal helper.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.lankhorst@xxxxxxxxxxxxxxx>
---
 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@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux