summaryrefslogtreecommitdiffstats
path: root/tools/rcu
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2021-07-19 19:08:12 +0200
committerPaul E. McKenney <paulmck@kernel.org>2021-09-16 19:31:26 +0200
commit2010776f8ccb68b85efbade3f19a11b17fb33d74 (patch)
tree3dbda3c6b59b71827353260d2464fe223423ac12 /tools/rcu
parenttorture: Make torture.sh print the number of files to be compressed (diff)
downloadlinux-2010776f8ccb68b85efbade3f19a11b17fb33d74.tar.xz
linux-2010776f8ccb68b85efbade3f19a11b17fb33d74.zip
tools/rcu: Add an extract-stall script
This commit adds a script that extracts RCU CPU stall warnings from console output. The user can optionally specify the number of lines preceding the stall to output, and also the number of lines of stall-warning text. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools/rcu')
-rw-r--r--tools/rcu/extract-stall.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/tools/rcu/extract-stall.sh b/tools/rcu/extract-stall.sh
new file mode 100644
index 000000000000..e565697c9f90
--- /dev/null
+++ b/tools/rcu/extract-stall.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Extract any RCU CPU stall warnings present in specified file.
+# Filter out clocksource lines. Note that preceding-lines excludes the
+# initial line of the stall warning but trailing-lines includes it.
+#
+# Usage: extract-stall.sh dmesg-file [ preceding-lines [ trailing-lines ] ]
+
+echo $1
+preceding_lines="${2-3}"
+trailing_lines="${3-10}"
+
+awk -v preceding_lines="$preceding_lines" -v trailing_lines="$trailing_lines" '
+suffix <= 0 {
+ for (i = preceding_lines; i > 0; i--)
+ last[i] = last[i - 1];
+ last[0] = $0;
+}
+
+suffix > 0 {
+ print $0;
+ suffix--;
+ if (suffix <= 0)
+ print "";
+}
+
+suffix <= 0 && /detected stall/ {
+ for (i = preceding_lines; i >= 0; i--)
+ if (last[i] != "")
+ print last[i];
+ suffix = trailing_lines;
+}' < "$1" | tr -d '\015' | grep -v clocksource
+