#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # description: Generic dynamic event - add/remove tracepoint probe events on module # requires: dynamic_events "t[:[/][]] []":README 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 echo 0 > events/enable echo > dynamic_events TRACEPOINT1=foo_bar TRACEPOINT2=foo_bar_with_cond echo "t:myevent1 $TRACEPOINT1" >> dynamic_events echo "t:myevent2 $TRACEPOINT2" >> dynamic_events grep -q myevent1 dynamic_events grep -q myevent2 dynamic_events test -d events/tracepoints/myevent1 test -d events/tracepoints/myevent2 echo "-:myevent2" >> dynamic_events grep -q myevent1 dynamic_events ! grep -q myevent2 dynamic_events echo > dynamic_events clear_trace :;: "Try to put a probe on a tracepoint in non-loaded module" ;: rmmod trace-events-sample echo "t:myevent1 $TRACEPOINT1" >> dynamic_events echo "t:myevent2 $TRACEPOINT2" >> dynamic_events grep -q myevent1 dynamic_events grep -q myevent2 dynamic_events test -d events/tracepoints/myevent1 test -d events/tracepoints/myevent2 echo 1 > events/tracepoints/enable modprobe trace-events-sample sleep 2 grep -q "myevent1" trace grep -q "myevent2" trace rmmod trace-events-sample trap "" EXIT echo 0 > events/tracepoints/enable echo > dynamic_events clear_trace