| # SPDX-License-Identifier: GPL-2.0 |
| |
| setup_remote() |
| { |
| local name=$1 |
| |
| [ -e $TRACING_DIR/remotes/$name/write_event ] || exit_unresolved |
| |
| cd remotes/$name/ |
| echo 0 > tracing_on |
| clear_trace |
| echo 7 > buffer_size_kb |
| echo 0 > events/enable |
| echo 1 > events/$name/selftest/enable |
| echo 1 > tracing_on |
| } |
| |
| setup_remote_test() |
| { |
| [ -d $TRACING_DIR/remotes/test/ ] || modprobe remote_test || exit_unresolved |
| |
| setup_remote "test" |
| } |
| |
| assert_loaded() |
| { |
| grep -q "(loaded)" buffer_size_kb || return 1 |
| } |
| |
| assert_unloaded() |
| { |
| grep -q "(unloaded)" buffer_size_kb || return 1 |
| } |
| |
| reload_remote() |
| { |
| echo 0 > tracing_on |
| clear_trace |
| assert_unloaded |
| echo 1 > tracing_on |
| assert_loaded |
| } |
| |
| dump_trace_pipe() |
| { |
| output=$(mktemp $TMPDIR/remote_test.XXXXXX) |
| cat trace_pipe > $output & |
| pid=$! |
| sleep 1 |
| kill -1 $pid |
| |
| echo $output |
| } |
| |
| check_trace() |
| { |
| start_id="$1" |
| end_id="$2" |
| file="$3" |
| |
| # Ensure the file is not empty |
| test -n "$(head $file)" |
| |
| prev_ts=0 |
| id=0 |
| |
| # Only keep <timestamp> <id> |
| tmp=$(mktemp $TMPDIR/remote_test.XXXXXX) |
| sed -e 's/\[[0-9]*\]\s*\([0-9]*.[0-9]*\): [a-z]* id=\([0-9]*\)/\1 \2/' $file > $tmp |
| |
| while IFS= read -r line; do |
| ts=$(echo $line | cut -d ' ' -f 1) |
| id=$(echo $line | cut -d ' ' -f 2) |
| |
| test $(echo "$ts>$prev_ts" | bc) -eq 1 |
| test $id -eq $start_id |
| |
| prev_ts=$ts |
| start_id=$((start_id + 1)) |
| done < $tmp |
| |
| test $id -eq $end_id |
| rm $tmp |
| } |
| |
| get_cpu_ids() |
| { |
| sed -n 's/^processor\s*:\s*\([0-9]\+\).*/\1/p' /proc/cpuinfo |
| } |
| |
| get_page_size() |
| { |
| sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page |
| } |
| |
| get_selftest_event_size() |
| { |
| sed -ne 's/^.*field:.*;.*size:\([0-9][0-9]*\);.*/\1/p' events/*/selftest/format | awk '{s+=$1} END {print s}' |
| } |