1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: Test trace remote reset 4# requires: remotes/test 5 6. $TEST_DIR/remotes/functions 7 8check_reset() 9{ 10 write_event_path="write_event" 11 taskset="" 12 13 clear_trace 14 15 # Is the buffer empty? 16 output=$(dump_trace_pipe) 17 test $(wc -l $output | cut -d ' ' -f1) -eq 0 18 19 if $(echo $(pwd) | grep -q "per_cpu/cpu"); then 20 write_event_path="../../write_event" 21 cpu_id=$(echo $(pwd) | sed -e 's/.*per_cpu\/cpu//') 22 taskset="taskset -c $cpu_id" 23 fi 24 rm $output 25 26 # Can we properly write a new event? 27 $taskset echo 7890 > $write_event_path 28 output=$(dump_trace_pipe) 29 test $(wc -l $output | cut -d ' ' -f1) -eq 1 30 grep -q "id=7890" $output 31 rm $output 32} 33 34test_global_interface() 35{ 36 output=$(mktemp $TMPDIR/remote_test.XXXXXX) 37 38 # Confidence check 39 echo 123456 > write_event 40 output=$(dump_trace_pipe) 41 grep -q "id=123456" $output 42 rm $output 43 44 # Reset single event 45 echo 1 > write_event 46 check_reset 47 48 # Reset lost events 49 for i in $(seq 1 10000); do 50 echo 1 > write_event 51 done 52 check_reset 53} 54 55test_percpu_interface() 56{ 57 [ "$(get_cpu_ids | wc -l)" -ge 2 ] || return 0 58 59 for cpu in $(get_cpu_ids); do 60 taskset -c $cpu echo 1 > write_event 61 done 62 63 check_non_empty=0 64 for cpu in $(get_cpu_ids); do 65 cd per_cpu/cpu$cpu/ 66 67 if [ $check_non_empty -eq 0 ]; then 68 check_reset 69 check_non_empty=1 70 else 71 # Check we have only reset 1 CPU 72 output=$(dump_trace_pipe) 73 test $(wc -l $output | cut -d ' ' -f1) -eq 1 74 rm $output 75 fi 76 cd - 77 done 78} 79 80test_reset() 81{ 82 test_global_interface 83 test_percpu_interface 84} 85 86if [ -z "$SOURCE_REMOTE_TEST" ]; then 87 set -e 88 setup_remote_test 89 test_reset 90fi 91