| #!/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 |
| |