Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/rcu/extract-stall.sh
26278 views
1
#!/bin/sh
2
# SPDX-License-Identifier: GPL-2.0+
3
4
usage() {
5
echo Extract any RCU CPU stall warnings present in specified file.
6
echo Filter out clocksource lines. Note that preceding-lines excludes the
7
echo initial line of the stall warning but trailing-lines includes it.
8
echo
9
echo Usage: $(basename $0) dmesg-file [ preceding-lines [ trailing-lines ] ]
10
echo
11
echo Error: $1
12
}
13
14
# Terminate the script, if the argument is missing
15
16
if test -f "$1" && test -r "$1"
17
then
18
:
19
else
20
usage "Console log file \"$1\" missing or unreadable."
21
exit 1
22
fi
23
24
echo $1
25
preceding_lines="${2-3}"
26
trailing_lines="${3-10}"
27
28
awk -v preceding_lines="$preceding_lines" -v trailing_lines="$trailing_lines" '
29
suffix <= 0 {
30
for (i = preceding_lines; i > 0; i--)
31
last[i] = last[i - 1];
32
last[0] = $0;
33
}
34
35
suffix > 0 {
36
print $0;
37
suffix--;
38
if (suffix <= 0)
39
print "";
40
}
41
42
suffix <= 0 && /detected stall/ {
43
for (i = preceding_lines; i >= 0; i--)
44
if (last[i] != "")
45
print last[i];
46
suffix = trailing_lines;
47
}' < "$1" | tr -d '\015' | grep -v clocksource
48
49
50