#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # description: event tracing - enable/disable with module event # requires: set_event "Can enable module events via: :mod:":README # flags: instance rmmod trace-events-sample ||: if ! modprobe trace-events-sample ; then echo "No trace-events sample module - please make CONFIG_SAMPLE_TRACE_EVENTS=m" exit_unresolved; fi trap "rmmod trace-events-sample" EXIT # Set events for the module echo ":mod:trace-events-sample" > set_event test_all_enabled() { # Check if more than one is enabled grep -q sample-trace:foo_bar set_event grep -q sample-trace:foo_bar_with_cond set_event grep -q sample-trace:foo_bar_with_fn set_event # All of them should be enabled. Check via the enable file val=`cat events/sample-trace/enable` if [ $val -ne 1 ]; then exit_fail fi } clear_events() { echo > set_event val=`cat events/enable` if [ "$val" != "0" ]; then exit_fail fi count=`cat set_event | wc -l` if [ $count -ne 0 ]; then exit_fail fi } test_all_enabled echo clear all events echo 0 > events/enable echo Confirm the events are disabled val=`cat events/sample-trace/enable` if [ $val -ne 0 ]; then exit_fail fi echo And the set_event file is empty cnt=`wc -l set_event` if [ $cnt -ne 0 ]; then exit_fail fi echo now enable all events echo 1 > events/enable echo Confirm the events are enabled again val=`cat events/sample-trace/enable` if [ $val -ne 1 ]; then exit_fail fi echo disable just the module events echo '!:mod:trace-events-sample' >> set_event echo Should have mix of events enabled val=`cat events/enable` if [ "$val" != "X" ]; then exit_fail fi echo Confirm the module events are disabled val=`cat events/sample-trace/enable` if [ $val -ne 0 ]; then exit_fail fi echo 0 > events/enable echo now enable the system events echo 'sample-trace:mod:trace-events-sample' > set_event test_all_enabled echo clear all events echo 0 > events/enable echo Confirm the events are disabled val=`cat events/sample-trace/enable` if [ $val -ne 0 ]; then exit_fail fi echo Test enabling foo_bar only echo 'foo_bar:mod:trace-events-sample' > set_event grep -q sample-trace:foo_bar set_event echo make sure nothing is found besides foo_bar if grep -q -v sample-trace:foo_bar set_event ; then exit_fail fi echo Append another using the system and event name echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event grep -q sample-trace:foo_bar set_event grep -q sample-trace:foo_bar_with_cond set_event count=`cat set_event | wc -l` if [ $count -ne 2 ]; then exit_fail fi clear_events rmmod trace-events-sample echo ':mod:trace-events-sample' > set_event echo make sure that the module shows up, and '-' is converted to '_' grep -q '\*:\*:mod:trace_events_sample' set_event modprobe trace-events-sample test_all_enabled clear_events rmmod trace-events-sample echo Enable just the system events echo 'sample-trace:mod:trace-events-sample' > set_event grep -q 'sample-trace:mod:trace_events_sample' set_event modprobe trace-events-sample test_all_enabled clear_events rmmod trace-events-sample echo Enable event with just event name echo 'foo_bar:mod:trace-events-sample' > set_event grep -q 'foo_bar:mod:trace_events_sample' set_event echo Enable another event with both system and event name echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event grep -q 'sample-trace:foo_bar_with_cond:mod:trace_events_sample' set_event echo Make sure the other event was still there grep -q 'foo_bar:mod:trace_events_sample' set_event modprobe trace-events-sample echo There should be no :mod: cached events if grep -q ':mod:' set_event; then exit_fail fi echo two events should be enabled count=`cat set_event | wc -l` if [ $count -ne 2 ]; then exit_fail fi echo only two events should be enabled val=`cat events/sample-trace/enable` if [ "$val" != "X" ]; then exit_fail fi val=`cat events/sample-trace/foo_bar/enable` if [ "$val" != "1" ]; then exit_fail fi val=`cat events/sample-trace/foo_bar_with_cond/enable` if [ "$val" != "1" ]; then exit_fail fi clear_trace