[Intel-gfx] [PATCH i-g-t 1/3] lib/igt_aux: Export statistics of signal helper.
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Wed Aug 2 10:29:17 UTC 2017
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 at 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
More information about the Intel-gfx
mailing list