Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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