| # 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}' | |
| } |