| #!/bin/sh |
| # SPDX-License-Identifier: GPL-2.0 |
| # description: Register/unregister many kprobe events |
| |
| [ -f kprobe_events ] || exit_unsupported # this is configurable |
| |
| # ftrace fentry skip size depends on the machine architecture. |
| # Currently HAVE_KPROBES_ON_FTRACE defined on x86 and powerpc64le |
| case `uname -m` in |
| x86_64|i[3456]86) OFFS=5;; |
| ppc64le) OFFS=8;; |
| *) OFFS=0;; |
| esac |
| |
| if [ -d events/kprobes ]; then |
| echo 0 > events/kprobes/enable |
| echo > kprobe_events |
| fi |
| |
| N=0 |
| echo "Setup up kprobes on first available 256 text symbols" |
| grep -i " t " /proc/kallsyms | cut -f3 -d" " | grep -v .*\\..* | \ |
| while read i; do |
| echo p ${i}+${OFFS} >> kprobe_events && N=$((N+1)) ||: |
| test $N -eq 256 && break |
| done |
| |
| L=`wc -l kprobe_events` |
| if [ $L -ne $N ]; then |
| echo "The number of kprobes events ($L) is not $N" |
| exit_fail |
| fi |
| |
| echo 1 > events/kprobes/enable |
| echo 0 > events/kprobes/enable |
| echo > kprobe_events |
| echo "Waiting for unoptimizing & freeing" |
| sleep 5 |
| echo "Done" |