summaryrefslogtreecommitdiffstats
path: root/tools/verification/rv/src/rv.c
diff options
context:
space:
mode:
authorDaniel Bristot de Oliveira <bristot@kernel.org>2022-11-11 16:53:06 +0100
committerSteven Rostedt (Google) <rostedt@goodmis.org>2022-12-10 00:06:24 +0100
commit6d60f89691fc979e55b88508f4cfa8f6b4c56eac (patch)
treefb395a03970b2d77a5ef17082e395172e8bea7cd /tools/verification/rv/src/rv.c
parentrv: Add rv tool (diff)
downloadlinux-6d60f89691fc979e55b88508f4cfa8f6b4c56eac.tar.xz
linux-6d60f89691fc979e55b88508f4cfa8f6b4c56eac.zip
tools/rv: Add in-kernel monitor interface
Add the ability to control and trace in-kernel monitors. This is a generic interface, it will check for existing monitors and enable standard setup, like enabling reactors. For example: # rv list wip wakeup in preemptive per-cpu testing monitor. [OFF] wwnr wakeup while not running per-task testing model. [OFF] # rv mon wwnr --help rv version 6.1.0-rc4: help usage: rv mon wwnr [-h] [-q] [-r reactor] [-s] [-v] -h/--help: print this menu and the reactor list -r/--reactor 'reactor': enables the 'reactor' -s/--self: when tracing (-t), also trace rv command -t/--trace: trace monitor's event -v/--verbose: print debug messages available reactors: nop printk panic # rv mon wwnr --trace <TASK>-PID [CPU] TYPE ID STATE x EVENT -> NEXT_STATE FINAL | | | | | | | | | rv-3613 [001] event 3613 running x switch_out -> not_running Y sshd-1248 [005] event 1248 running x switch_out -> not_running Y <idle>-0 [005] event 71 not_running x wakeup -> not_running Y <idle>-0 [005] event 71 not_running x switch_in -> running N kcompactd0-71 [005] event 71 running x switch_out -> not_running Y <idle>-0 [000] event 860 not_running x wakeup -> not_running Y <idle>-0 [000] event 860 not_running x switch_in -> running N systemd-oomd-860 [000] event 860 running x switch_out -> not_running Y <idle>-0 [000] event 860 not_running x wakeup -> not_running Y <idle>-0 [000] event 860 not_running x switch_in -> running N systemd-oomd-860 [000] event 860 running x switch_out -> not_running Y <idle>-0 [005] event 71 not_running x wakeup -> not_running Y <idle>-0 [005] event 71 not_running x switch_in -> running N kcompactd0-71 [005] event 71 running x switch_out -> not_running Y <idle>-0 [000] event 860 not_running x wakeup -> not_running Y <idle>-0 [000] event 860 not_running x switch_in -> running N systemd-oomd-860 [000] event 860 running x switch_out -> not_running Y <idle>-0 [001] event 3613 not_running x wakeup -> not_running Y Link: https://lkml.kernel.org/r/1e57547e3acadda6e23949b2672c89e76ec2ec42.1668180100.git.bristot@kernel.org Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Diffstat (limited to '')
-rw-r--r--tools/verification/rv/src/rv.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/verification/rv/src/rv.c b/tools/verification/rv/src/rv.c
index a9ea1c891ce0..e601cd9c411e 100644
--- a/tools/verification/rv/src/rv.c
+++ b/tools/verification/rv/src/rv.c
@@ -12,6 +12,7 @@
#include <trace.h>
#include <utils.h>
+#include <in_kernel.h>
static int stop_session;
@@ -63,6 +64,7 @@ static void rv_list(int argc, char **argv)
exit(1);
}
+ ikm_list_monitors();
exit(0);
}
@@ -109,6 +111,7 @@ static void rv_mon(int argc, char **argv)
* Call all possible monitor implementations, looking
* for the [monitor].
*/
+ run += ikm_run_monitor(monitor_name, argc-1, &argv[1]);
if (!run)
err_msg("rv: monitor %s does not exist\n", monitor_name);