1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: event tracing - enable/disable with module event 4# requires: set_event "Can enable module events via: :mod:":README 5# flags: instance 6 7rmmod trace-events-sample ||: 8if ! modprobe trace-events-sample ; then 9 echo "No trace-events sample module - please make CONFIG_SAMPLE_TRACE_EVENTS=m" 10 exit_unresolved; 11fi 12trap "rmmod trace-events-sample" EXIT 13 14# Set events for the module 15echo ":mod:trace-events-sample" > set_event 16 17test_all_enabled() { 18 19 # Check if more than one is enabled 20 grep -q sample-trace:foo_bar set_event 21 grep -q sample-trace:foo_bar_with_cond set_event 22 grep -q sample-trace:foo_bar_with_fn set_event 23 24 # All of them should be enabled. Check via the enable file 25 val=`cat events/sample-trace/enable` 26 if [ $val -ne 1 ]; then 27 exit_fail 28 fi 29} 30 31clear_events() { 32 echo > set_event 33 val=`cat events/enable` 34 if [ "$val" != "0" ]; then 35 exit_fail 36 fi 37 count=`cat set_event | wc -l` 38 if [ $count -ne 0 ]; then 39 exit_fail 40 fi 41} 42 43test_all_enabled 44 45echo clear all events 46echo 0 > events/enable 47 48echo Confirm the events are disabled 49val=`cat events/sample-trace/enable` 50if [ $val -ne 0 ]; then 51 exit_fail 52fi 53 54echo And the set_event file is empty 55 56cnt=`wc -l set_event` 57if [ $cnt -ne 0 ]; then 58 exit_fail 59fi 60 61echo now enable all events 62echo 1 > events/enable 63 64echo Confirm the events are enabled again 65val=`cat events/sample-trace/enable` 66if [ $val -ne 1 ]; then 67 exit_fail 68fi 69 70echo disable just the module events 71echo '!:mod:trace-events-sample' >> set_event 72 73echo Should have mix of events enabled 74val=`cat events/enable` 75if [ "$val" != "X" ]; then 76 exit_fail 77fi 78 79echo Confirm the module events are disabled 80val=`cat events/sample-trace/enable` 81if [ $val -ne 0 ]; then 82 exit_fail 83fi 84 85echo 0 > events/enable 86 87echo now enable the system events 88echo 'sample-trace:mod:trace-events-sample' > set_event 89 90test_all_enabled 91 92echo clear all events 93echo 0 > events/enable 94 95echo Confirm the events are disabled 96val=`cat events/sample-trace/enable` 97if [ $val -ne 0 ]; then 98 exit_fail 99fi 100 101echo Test enabling foo_bar only 102echo 'foo_bar:mod:trace-events-sample' > set_event 103 104grep -q sample-trace:foo_bar set_event 105 106echo make sure nothing is found besides foo_bar 107if grep -q -v sample-trace:foo_bar set_event ; then 108 exit_fail 109fi 110 111echo Append another using the system and event name 112echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event 113 114grep -q sample-trace:foo_bar set_event 115grep -q sample-trace:foo_bar_with_cond set_event 116 117count=`cat set_event | wc -l` 118 119if [ $count -ne 2 ]; then 120 exit_fail 121fi 122 123clear_events 124 125rmmod trace-events-sample 126 127echo ':mod:trace-events-sample' > set_event 128 129echo make sure that the module shows up, and '-' is converted to '_' 130grep -q '\*:\*:mod:trace_events_sample' set_event 131 132modprobe trace-events-sample 133 134test_all_enabled 135 136clear_events 137 138rmmod trace-events-sample 139 140echo Enable just the system events 141echo 'sample-trace:mod:trace-events-sample' > set_event 142grep -q 'sample-trace:mod:trace_events_sample' set_event 143 144modprobe trace-events-sample 145 146test_all_enabled 147 148clear_events 149 150rmmod trace-events-sample 151 152echo Enable event with just event name 153echo 'foo_bar:mod:trace-events-sample' > set_event 154grep -q 'foo_bar:mod:trace_events_sample' set_event 155 156echo Enable another event with both system and event name 157echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event 158grep -q 'sample-trace:foo_bar_with_cond:mod:trace_events_sample' set_event 159echo Make sure the other event was still there 160grep -q 'foo_bar:mod:trace_events_sample' set_event 161 162modprobe trace-events-sample 163 164echo There should be no :mod: cached events 165if grep -q ':mod:' set_event; then 166 exit_fail 167fi 168 169echo two events should be enabled 170count=`cat set_event | wc -l` 171if [ $count -ne 2 ]; then 172 exit_fail 173fi 174 175echo only two events should be enabled 176val=`cat events/sample-trace/enable` 177if [ "$val" != "X" ]; then 178 exit_fail 179fi 180 181val=`cat events/sample-trace/foo_bar/enable` 182if [ "$val" != "1" ]; then 183 exit_fail 184fi 185 186val=`cat events/sample-trace/foo_bar_with_cond/enable` 187if [ "$val" != "1" ]; then 188 exit_fail 189fi 190 191clear_trace 192