#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # description: Kprobe dynamic event - probing module # requires: kprobe_events rmmod trace-printk ||: if ! modprobe trace-printk ; then echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK= m" exit_unresolved; fi MOD=trace_printk FUNC=trace_printk_irq_work :;: "Add an event on a module function without specifying event name" ;: echo "p $MOD:$FUNC" > kprobe_events PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure :;: "Add an event on a module function with new event name" ;: echo "p:event1 $MOD:$FUNC" > kprobe_events test -d events/kprobes/event1 || exit_failure :;: "Add an event on a module function with new event and group name" ;: echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events test -d events/kprobes1/event1 || exit_failure :;: "Remove target module, but event still be there" ;: if ! rmmod trace-printk ; then echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD" exit_unresolved; fi test -d events/kprobes1/event1 :;: "Check posibility to defining events on unloaded module";: echo "p:event2 $MOD:$FUNC" >> kprobe_events :;: "Target is gone, but we can prepare for next time";: echo 1 > events/kprobes1/event1/enable :;: "Load module again, which means the event1 should be recorded";: modprobe trace-printk grep "event1:" trace :;: "Remove the module again and check the event is not locked" rmmod trace-printk echo 0 > events/kprobes1/event1/enable echo "-:kprobes1/event1" >> kprobe_events