#!/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=`cat kprobe_events | wc -l` if [ $L -ne 256 ]; then echo "The number of kprobes events ($L) is not 256" 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"