GNU Linux-libre 4.19.245-gnu1
[releases.git] / tools / testing / selftests / ftrace / test.d / kprobe / multiple_kprobes.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: Register/unregister many kprobe events
4
5 [ -f kprobe_events ] || exit_unsupported # this is configurable
6
7 # ftrace fentry skip size depends on the machine architecture.
8 # Currently HAVE_KPROBES_ON_FTRACE defined on x86 and powerpc64le
9 case `uname -m` in
10   x86_64|i[3456]86) OFFS=5;;
11   ppc64le) OFFS=8;;
12   *) OFFS=0;;
13 esac
14
15 if [ -d events/kprobes ]; then
16   echo 0 > events/kprobes/enable
17   echo > kprobe_events
18 fi
19
20 N=0
21 echo "Setup up kprobes on first available 256 text symbols"
22 grep -i " t " /proc/kallsyms | cut -f3 -d" " | grep -v .*\\..* | \
23 while read i; do
24   echo p ${i}+${OFFS} >> kprobe_events && N=$((N+1)) ||:
25   test $N -eq 256 && break
26 done
27
28 L=`cat kprobe_events | wc -l`
29 if [ $L -ne 256 ]; then
30   echo "The number of kprobes events ($L) is not 256"
31   exit_fail
32 fi
33
34 echo 1 > events/kprobes/enable
35 echo 0 > events/kprobes/enable
36 echo > kprobe_events
37 echo "Waiting for unoptimizing & freeing"
38 sleep 5
39 echo "Done"