1 #!/bin/sh 1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0+ 2 # SPDX-License-Identifier: GPL-2.0+ 3 !! 3 # 4 usage() { !! 4 # Extract any RCU CPU stall warnings present in specified file. 5 echo Extract any RCU CPU stall warning !! 5 # Filter out clocksource lines. Note that preceding-lines excludes the 6 echo Filter out clocksource lines. No !! 6 # initial line of the stall warning but trailing-lines includes it. 7 echo initial line of the stall warning !! 7 # 8 echo !! 8 # Usage: extract-stall.sh dmesg-file [ preceding-lines [ trailing-lines ] ] 9 echo Usage: $(basename $0) dmesg-file << 10 echo << 11 echo Error: $1 << 12 } << 13 << 14 # Terminate the script, if the argument is mis << 15 << 16 if test -f "$1" && test -r "$1" << 17 then << 18 : << 19 else << 20 usage "Console log file \"$1\" missing << 21 exit 1 << 22 fi << 23 9 24 echo $1 10 echo $1 25 preceding_lines="${2-3}" 11 preceding_lines="${2-3}" 26 trailing_lines="${3-10}" 12 trailing_lines="${3-10}" 27 13 28 awk -v preceding_lines="$preceding_lines" -v t 14 awk -v preceding_lines="$preceding_lines" -v trailing_lines="$trailing_lines" ' 29 suffix <= 0 { 15 suffix <= 0 { 30 for (i = preceding_lines; i > 0; i--) 16 for (i = preceding_lines; i > 0; i--) 31 last[i] = last[i - 1]; 17 last[i] = last[i - 1]; 32 last[0] = $0; 18 last[0] = $0; 33 } 19 } 34 20 35 suffix > 0 { 21 suffix > 0 { 36 print $0; 22 print $0; 37 suffix--; 23 suffix--; 38 if (suffix <= 0) 24 if (suffix <= 0) 39 print ""; 25 print ""; 40 } 26 } 41 27 42 suffix <= 0 && /detected stall/ { 28 suffix <= 0 && /detected stall/ { 43 for (i = preceding_lines; i >= 0; i--) 29 for (i = preceding_lines; i >= 0; i--) 44 if (last[i] != "") 30 if (last[i] != "") 45 print last[i]; 31 print last[i]; 46 suffix = trailing_lines; 32 suffix = trailing_lines; 47 }' < "$1" | tr -d '\015' | grep -v clocksource 33 }' < "$1" | tr -d '\015' | grep -v clocksource 48 34
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.