1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: Kprobe dynamic event - probing module 4# requires: kprobe_events 5 6rmmod trace-printk ||: 7if ! modprobe trace-printk ; then 8 echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK= 9m" 10 exit_unresolved; 11fi 12 13MOD=trace_printk 14FUNC=trace_printk_irq_work 15 16:;: "Add an event on a module function without specifying event name" ;: 17 18echo "p $MOD:$FUNC" > kprobe_events 19PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` 20test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure 21 22:;: "Add an event on a module function with new event name" ;: 23 24echo "p:event1 $MOD:$FUNC" > kprobe_events 25test -d events/kprobes/event1 || exit_failure 26 27:;: "Add an event on a module function with new event and group name" ;: 28 29echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events 30test -d events/kprobes1/event1 || exit_failure 31 32:;: "Remove target module, but event still be there" ;: 33if ! rmmod trace-printk ; then 34 echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD" 35 exit_unresolved; 36fi 37test -d events/kprobes1/event1 38 39:;: "Check posibility to defining events on unloaded module";: 40echo "p:event2 $MOD:$FUNC" >> kprobe_events 41 42:;: "Target is gone, but we can prepare for next time";: 43echo 1 > events/kprobes1/event1/enable 44 45:;: "Load module again, which means the event1 should be recorded";: 46modprobe trace-printk 47grep "event1:" trace 48 49:;: "Remove the module again and check the event is not locked" 50rmmod trace-printk 51echo 0 > events/kprobes1/event1/enable 52echo "-:kprobes1/event1" >> kprobe_events 53