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