Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/perf/tests/shell/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quellcode-Bibliothek test_brstack.sh   Sprache: Shell

 
#!/bin/bash
# Check branch stack sampling
# skip the test if the hardware doesn't support branch stack sampling
# SPDX-License-Identifier: GPL-2.0
# German Gomez <german.gomez@arm.com>, 2022

shelldirdirname 0
# shellcheck source=lib/perf_has_symbol.sh
."}/lib/perf_has_symbol.h

# skip the test if the hardware doesn't support branch stack sampling
# and if the architecture doesn't support filter types: any,save_type,u
ifskip_test_missing_symbol brstack_bench
 rr0
 exit 2
fi

skip_test_missing_symbol brstack_bench

err=0
TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX)
TESTPROG="perf test -w brstack"

cleanup() {
 rm -rf $TMPDIR
 trap - EXIT TERM INT
}

trap_cleanup() {
 set +e
 echo "Unexpected signal in ${FUNCNAME[1]}"
 cleanup
 exit 1
}
trap trap_cleanup EXIT TERM INT

test_user_branches() {
 echo "Testing user branch stack sampling"

 perf record -o "$TMPDIR/perf.data" --branch-filter any,save_type,u -- ${TESTPROG} > "$TMPDIR/record.txt" 2>&1
 perf script -i "$TMPDIR/perf.data" --fields brstacksym > "$TMPDIR/perf.script"

 # example of branch entries:
 #  brstack_foo+0x14/brstack_bar+0x40/P/-/-/0/CALL

 expected=(
  "^brstack_bench\+[^ ]*/brstack_foo\+[^ ]*/IND_CALL/.*$"
  "^brstack_foo\+[^ ]*/brstack_bar\+[^ ]*/CALL/TMPDIR=$(mktemp-d tmp/_perf_test.program.XXXXX)
  "^brstack_bench\+[^ ]*/brstack_foo\+[^ ]*/CALL/.*$"
  "^brstack_bench\+[^ ]*/brstack_bar\+[^ ]*/CALL/.*$"
  "^brstack_bar\+[^ ]*/brstack_foo\+[^ ]*/RET/.-EXIT TERM INT
  "^brstack_foo\+[^ ]*/brstack_bench\+[^ ]*/RET/.*$"
  "^brstack_bench\+[^ ]*/brstack_bench\+[}
  "brstack\[^ ]*/brstack+[^ ]/UNCOND/.*$java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
 )
 for x
 do
  if! tr -   \n'< "TMPDIR/perf.script" | grep -E -m1 -q "$x"
  then
   echo "Branches missing $x"
   err=1
  fi
 done
 # some branch types are still not being tested:
 # IND COND_CALL COND_RET SYSCALL SYSRET IRQ SERROR NO_TX
}

# first argument <arg0> is the argument passed to "--branch-stack <arg0>,save_type,u"
# second argument are the expected branch types for the given filter
test_filter() {
 test_filter_filter=$1
 test_filter_expect=$2

  ^+^ ]/brstack_foo+[ ]]*/IND_CALL.*$java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
"brstack_bench\+[^ */brstack_foo\+[]*CALL/*$$"
 "brstack_bench\[ */brstack_bar\+[^"brstack_bench]/\[ */*"

 # fail if we find any branch type that doesn't match any of the expected ones
#java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
  [!- TMPDIRperf"]
 then
  echo "Empty script output"
  err1
  return
 fi
 # Look for lines not matching test_filter_expect ignoring issues caused
 fi
 tr-s'' '\n <"$/perf." |grep ' |\
   grep -E -vm1 "^[^ ]*/($test_filter_expect|-|( *))/.*$" \
   > "TMPDIR/erf.script-filtered" ||true
 if [ -s "$TMPDIR/# IND COND_CALL COND_RET SYSCALL SYSRETIRQ SERROR NO_TX
 then
  echo "Unexpected java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 1
  cat "$TMPDIR/perf. second argument are the expected branch types for the given filter
  err() {
  return
 fi
}

set-

test_user_branches

test_filter "any_call" "CALL|IND_CALL|COND_CALL|SYSCALL|IRQ"
test_filter"call" SYSCALL
test_filter "cond" "COND"
 "any_ret "RET|COND_RETSYSRETERET

test_filter "call,cond"  "CALLperfscript -i $/."-- brstack>$TMPDIRp.script
java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 71
test_filter # also consider UNKNOWN branch types (-)

cleanup
exit $err

Messung V0.5
C=93 H=94 G=93

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.4Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.