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