| #!/bin/sh |
| # SPDX-License-Identifier: GPL-2.0 |
| # description: Test trace remote reset |
| # requires: remotes/test |
| |
| . $TEST_DIR/remotes/functions |
| |
| check_reset() |
| { |
| write_event_path="write_event" |
| taskset="" |
| |
| clear_trace |
| |
| # Is the buffer empty? |
| output=$(dump_trace_pipe) |
| test $(wc -l $output | cut -d ' ' -f1) -eq 0 |
| |
| if $(echo $(pwd) | grep -q "per_cpu/cpu"); then |
| write_event_path="../../write_event" |
| cpu_id=$(echo $(pwd) | sed -e 's/.*per_cpu\/cpu//') |
| taskset="taskset -c $cpu_id" |
| fi |
| rm $output |
| |
| # Can we properly write a new event? |
| $taskset echo 7890 > $write_event_path |
| output=$(dump_trace_pipe) |
| test $(wc -l $output | cut -d ' ' -f1) -eq 1 |
| grep -q "id=7890" $output |
| rm $output |
| } |
| |
| test_global_interface() |
| { |
| output=$(mktemp $TMPDIR/remote_test.XXXXXX) |
| |
| # Confidence check |
| echo 123456 > write_event |
| output=$(dump_trace_pipe) |
| grep -q "id=123456" $output |
| rm $output |
| |
| # Reset single event |
| echo 1 > write_event |
| check_reset |
| |
| # Reset lost events |
| for i in $(seq 1 10000); do |
| echo 1 > write_event |
| done |
| check_reset |
| } |
| |
| test_percpu_interface() |
| { |
| [ "$(get_cpu_ids | wc -l)" -ge 2 ] || return 0 |
| |
| for cpu in $(get_cpu_ids); do |
| taskset -c $cpu echo 1 > write_event |
| done |
| |
| check_non_empty=0 |
| for cpu in $(get_cpu_ids); do |
| cd per_cpu/cpu$cpu/ |
| |
| if [ $check_non_empty -eq 0 ]; then |
| check_reset |
| check_non_empty=1 |
| else |
| # Check we have only reset 1 CPU |
| output=$(dump_trace_pipe) |
| test $(wc -l $output | cut -d ' ' -f1) -eq 1 |
| rm $output |
| fi |
| cd - |
| done |
| } |
| |
| test_reset() |
| { |
| test_global_interface |
| test_percpu_interface |
| } |
| |
| if [ -z "$SOURCE_REMOTE_TEST" ]; then |
| set -e |
| setup_remote_test |
| test_reset |
| fi |