xref: /openbmc/linux/tools/testing/selftests/ftrace/test.d/event/event-no-pid.tc (revision 762f99f4f3cb41a775b5157dd761217beba65873)
1ebed9628SSteven Rostedt (VMware)#!/bin/sh
2ebed9628SSteven Rostedt (VMware)# SPDX-License-Identifier: GPL-2.0
3ebed9628SSteven Rostedt (VMware)# description: event tracing - restricts events based on pid notrace filtering
43591e90fSMasami Hiramatsu# requires: set_event events/sched set_event_pid set_event_notrace_pid
5ebed9628SSteven Rostedt (VMware)# flags: instance
6ebed9628SSteven Rostedt (VMware)
7ebed9628SSteven Rostedt (VMware)do_reset() {
8ebed9628SSteven Rostedt (VMware)    echo > set_event
9ebed9628SSteven Rostedt (VMware)    echo > set_event_pid
10ebed9628SSteven Rostedt (VMware)    echo > set_event_notrace_pid
11ebed9628SSteven Rostedt (VMware)    echo 0 > options/event-fork
12ebed9628SSteven Rostedt (VMware)    echo 0 > events/enable
13ebed9628SSteven Rostedt (VMware)    clear_trace
14ebed9628SSteven Rostedt (VMware)    echo 1 > tracing_on
15ebed9628SSteven Rostedt (VMware)}
16ebed9628SSteven Rostedt (VMware)
17ebed9628SSteven Rostedt (VMware)fail() { #msg
18ebed9628SSteven Rostedt (VMware)    cat trace
19ebed9628SSteven Rostedt (VMware)    do_reset
20ebed9628SSteven Rostedt (VMware)    echo $1
21ebed9628SSteven Rostedt (VMware)    exit_fail
22ebed9628SSteven Rostedt (VMware)}
23ebed9628SSteven Rostedt (VMware)
24ebed9628SSteven Rostedt (VMware)count_pid() {
25ebed9628SSteven Rostedt (VMware)    pid=$@
26ebed9628SSteven Rostedt (VMware)    cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep $pid | wc -l
27ebed9628SSteven Rostedt (VMware)}
28ebed9628SSteven Rostedt (VMware)
29ebed9628SSteven Rostedt (VMware)count_no_pid() {
30ebed9628SSteven Rostedt (VMware)    pid=$1
31ebed9628SSteven Rostedt (VMware)    cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep -v $pid | wc -l
32ebed9628SSteven Rostedt (VMware)}
33ebed9628SSteven Rostedt (VMware)
34ebed9628SSteven Rostedt (VMware)enable_system() {
35ebed9628SSteven Rostedt (VMware)    system=$1
36ebed9628SSteven Rostedt (VMware)
37ebed9628SSteven Rostedt (VMware)    if [ -d events/$system ]; then
38ebed9628SSteven Rostedt (VMware)	echo 1 > events/$system/enable
39ebed9628SSteven Rostedt (VMware)    fi
40ebed9628SSteven Rostedt (VMware)}
41ebed9628SSteven Rostedt (VMware)
42ebed9628SSteven Rostedt (VMware)enable_events() {
43ebed9628SSteven Rostedt (VMware)    echo 0 > tracing_on
44ebed9628SSteven Rostedt (VMware)    # Enable common groups of events, as all events can allow for
45ebed9628SSteven Rostedt (VMware)    # events to be traced via scheduling that we don't care to test.
46ebed9628SSteven Rostedt (VMware)    enable_system syscalls
47ebed9628SSteven Rostedt (VMware)    enable_system rcu
48ebed9628SSteven Rostedt (VMware)    enable_system block
49ebed9628SSteven Rostedt (VMware)    enable_system exceptions
50ebed9628SSteven Rostedt (VMware)    enable_system irq
51ebed9628SSteven Rostedt (VMware)    enable_system net
52ebed9628SSteven Rostedt (VMware)    enable_system power
53ebed9628SSteven Rostedt (VMware)    enable_system signal
54ebed9628SSteven Rostedt (VMware)    enable_system sock
55ebed9628SSteven Rostedt (VMware)    enable_system timer
56ebed9628SSteven Rostedt (VMware)    enable_system thermal
57ebed9628SSteven Rostedt (VMware)    echo 1 > tracing_on
58ebed9628SSteven Rostedt (VMware)}
59ebed9628SSteven Rostedt (VMware)
60*07b60713SKrzysztof Kozlowskiother_task() {
61*07b60713SKrzysztof Kozlowski    sleep .001 || usleep 1 || sleep 1
62*07b60713SKrzysztof Kozlowski}
63*07b60713SKrzysztof Kozlowski
64ebed9628SSteven Rostedt (VMware)echo 0 > options/event-fork
65ebed9628SSteven Rostedt (VMware)
66ebed9628SSteven Rostedt (VMware)do_reset
67ebed9628SSteven Rostedt (VMware)
68ebed9628SSteven Rostedt (VMware)read mypid rest < /proc/self/stat
69ebed9628SSteven Rostedt (VMware)
70ebed9628SSteven Rostedt (VMware)echo $mypid > set_event_notrace_pid
71ebed9628SSteven Rostedt (VMware)grep -q $mypid set_event_notrace_pid
72ebed9628SSteven Rostedt (VMware)
73ebed9628SSteven Rostedt (VMware)enable_events
74ebed9628SSteven Rostedt (VMware)
75ebed9628SSteven Rostedt (VMware)yield
76ebed9628SSteven Rostedt (VMware)
77ebed9628SSteven Rostedt (VMware)echo 0 > tracing_on
78ebed9628SSteven Rostedt (VMware)
79ebed9628SSteven Rostedt (VMware)cnt=`count_pid $mypid`
80ebed9628SSteven Rostedt (VMware)if [ $cnt -ne 0 ]; then
81ebed9628SSteven Rostedt (VMware)    fail "Filtered out task has events"
82ebed9628SSteven Rostedt (VMware)fi
83ebed9628SSteven Rostedt (VMware)
84ebed9628SSteven Rostedt (VMware)cnt=`count_no_pid $mypid`
85ebed9628SSteven Rostedt (VMware)if [ $cnt -eq 0 ]; then
86ebed9628SSteven Rostedt (VMware)    fail "No other events were recorded"
87ebed9628SSteven Rostedt (VMware)fi
88ebed9628SSteven Rostedt (VMware)
89ebed9628SSteven Rostedt (VMware)do_reset
90ebed9628SSteven Rostedt (VMware)
91ebed9628SSteven Rostedt (VMware)echo $mypid > set_event_notrace_pid
92ebed9628SSteven Rostedt (VMware)echo 1 > options/event-fork
93ebed9628SSteven Rostedt (VMware)
94ebed9628SSteven Rostedt (VMware)enable_events
95ebed9628SSteven Rostedt (VMware)
96ebed9628SSteven Rostedt (VMware)yield &
97ebed9628SSteven Rostedt (VMware)child=$!
98ebed9628SSteven Rostedt (VMware)echo "child = $child"
99ebed9628SSteven Rostedt (VMware)wait $child
100ebed9628SSteven Rostedt (VMware)
101*07b60713SKrzysztof Kozlowski# Be sure some other events will happen for small systems (e.g. 1 core)
102*07b60713SKrzysztof Kozlowskiother_task
103*07b60713SKrzysztof Kozlowski
104ebed9628SSteven Rostedt (VMware)echo 0 > tracing_on
105ebed9628SSteven Rostedt (VMware)
106ebed9628SSteven Rostedt (VMware)cnt=`count_pid $mypid`
107ebed9628SSteven Rostedt (VMware)if [ $cnt -ne 0 ]; then
108ebed9628SSteven Rostedt (VMware)    fail "Filtered out task has events"
109ebed9628SSteven Rostedt (VMware)fi
110ebed9628SSteven Rostedt (VMware)
111ebed9628SSteven Rostedt (VMware)cnt=`count_pid $child`
112ebed9628SSteven Rostedt (VMware)if [ $cnt -ne 0 ]; then
113ebed9628SSteven Rostedt (VMware)    fail "Child of filtered out taskhas events"
114ebed9628SSteven Rostedt (VMware)fi
115ebed9628SSteven Rostedt (VMware)
116ebed9628SSteven Rostedt (VMware)cnt=`count_no_pid $mypid`
117ebed9628SSteven Rostedt (VMware)if [ $cnt -eq 0 ]; then
118ebed9628SSteven Rostedt (VMware)    fail "No other events were recorded"
119ebed9628SSteven Rostedt (VMware)fi
120ebed9628SSteven Rostedt (VMware)
121ebed9628SSteven Rostedt (VMware)do_reset
122ebed9628SSteven Rostedt (VMware)
123ebed9628SSteven Rostedt (VMware)exit 0
124