2 # SPDX-License-Identifier: GPL-2.0
3 # description: Kprobe events - probe points
4 # requires: kprobe_events
6 TARGET_FUNC
=tracefs_create_dir
9 printf "%d" "0x"`echo $1 | tail -c 8`
12 set_offs
() { # prev target next
16 TARGET
="0x$2" # an address
17 PREV
=`expr $A1 - $A2` # offset to previous symbol
18 NEXT
=+`expr $A3 - $A2` # offset to next symbol
19 OVERFLOW
=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol
22 # We have to decode symbol addresses to get correct offsets.
23 # If the offset is not an instruction boundary, it cause -EILSEQ.
24 set_offs
`grep -A1 -B1 ${TARGET_FUNC} /proc/kallsyms | cut -f 1 -d " " | xargs`
27 # printf "%x" -1 returns (unsigned long)-1.
28 if [ `printf "%x" -1 | wc -c` != 9 ]; then
32 echo "p:testprobe ${TARGET_FUNC}" > kprobe_events
33 echo "p:testprobe ${TARGET}" > kprobe_events
34 echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
35 ! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events
36 if [ "${UINT_TEST}" = yes ]; then
37 ! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events