Commit | Line | Data |
---|---|---|
2010776f PM |
1 | #!/bin/sh |
2 | # SPDX-License-Identifier: GPL-2.0+ | |
236bdb88 BC |
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 | |
2010776f PM |
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 |