1bdd7e3d6SMasami Hiramatsu#!/bin/sh
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
3bdd7e3d6SMasami Hiramatsu# description: Register/unregister many kprobe events
43591e90fSMasami Hiramatsu# requires: kprobe_events
584c06566SThomas Meyer
6bdd7e3d6SMasami Hiramatsu# ftrace fentry skip size depends on the machine architecture.
7f7181e5aSNaveen N. Rao# Currently HAVE_KPROBES_ON_FTRACE defined on x86 and powerpc64le
8bdd7e3d6SMasami Hiramatsucase `uname -m` in
9bdd7e3d6SMasami Hiramatsu  x86_64|i[3456]86) OFFS=5;;
10f7181e5aSNaveen N. Rao  ppc64le) OFFS=8;;
11bdd7e3d6SMasami Hiramatsu  *) OFFS=0;;
12bdd7e3d6SMasami Hiramatsuesac
13bdd7e3d6SMasami Hiramatsu
149739cee6SMasami HiramatsuN=0
159739cee6SMasami Hiramatsuecho "Setup up kprobes on first available 256 text symbols"
165e466647SMasami Hiramatsugrep -i " t " /proc/kallsyms | cut -f3 -d" " | grep -v .*\\..* | \
179739cee6SMasami Hiramatsuwhile read i; do
189739cee6SMasami Hiramatsu  echo p ${i}+${OFFS} >> kprobe_events && N=$((N+1)) ||:
199739cee6SMasami Hiramatsu  test $N -eq 256 && break
209739cee6SMasami Hiramatsudone
219739cee6SMasami Hiramatsu
225cc6c8d4SMasami HiramatsuL=`cat kprobe_events | wc -l`
235cc6c8d4SMasami Hiramatsuif [ $L -ne 256 ]; then
245cc6c8d4SMasami Hiramatsu  echo "The number of kprobes events ($L) is not 256"
259739cee6SMasami Hiramatsu  exit_fail
269739cee6SMasami Hiramatsufi
27bdd7e3d6SMasami Hiramatsu
28*eab691b1STiezhu Yangcat kprobe_events >> $testlog
29*eab691b1STiezhu Yang
30bdd7e3d6SMasami Hiramatsuecho 1 > events/kprobes/enable
31bdd7e3d6SMasami Hiramatsuecho 0 > events/kprobes/enable
32bdd7e3d6SMasami Hiramatsuecho > kprobe_events
33bdd7e3d6SMasami Hiramatsuecho "Waiting for unoptimizing & freeing"
34bdd7e3d6SMasami Hiramatsusleep 5
35bdd7e3d6SMasami Hiramatsuecho "Done"
36