GNU Linux-libre 4.19.295-gnu1
[releases.git] / tools / testing / selftests / ftrace / test.d / trigger / trigger-trace-marker-synthetic-kernel.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: trace_marker trigger - test histogram with synthetic event against kernel event
4 # flags:
5
6 do_reset() {
7     reset_trigger
8     echo > set_event
9     echo > synthetic_events
10     clear_trace
11 }
12
13 fail() { #msg
14     do_reset
15     echo $1
16     exit_fail
17 }
18
19 if [ ! -f set_event ]; then
20     echo "event tracing is not supported"
21     exit_unsupported
22 fi
23
24 if [ ! -f synthetic_events ]; then
25     echo "synthetic events not supported"
26     exit_unsupported
27 fi
28
29 if [ ! -d events/ftrace/print ]; then
30     echo "event trace_marker is not supported"
31     exit_unsupported
32 fi
33
34 if [ ! -d events/sched/sched_waking ]; then
35     echo "event sched_waking is not supported"
36     exit_unsupported
37 fi
38
39 if [ ! -f events/ftrace/print/trigger ]; then
40     echo "event trigger is not supported"
41     exit_unsupported
42 fi
43
44 if [ ! -f events/ftrace/print/hist ]; then
45     echo "hist trigger is not supported"
46     exit_unsupported
47 fi
48
49 do_reset
50
51 echo "Test histogram kernel event to trace_marker latency histogram trigger"
52
53 echo 'latency u64 lat' > synthetic_events
54 echo 'hist:keys=pid:ts0=common_timestamp.usecs' > events/sched/sched_waking/trigger
55 echo 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)' > events/ftrace/print/trigger
56 echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
57 sleep 1
58 echo "hello" > trace_marker
59
60 grep 'hitcount: *1$' events/ftrace/print/hist > /dev/null || \
61     fail "hist trigger did not trigger correct times on trace_marker"
62
63 grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \
64     fail "hist trigger did not trigger "
65
66 do_reset
67
68 exit 0