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