1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0 3 # description: Kprobe events - probe points 4 # requires: kprobe_events 5 6 TARGET_FUNC=tracefs_create_dir 7 8 dec_addr() { # hexaddr 9 printf "%d" "0x"`echo $1 | tail -c 8` 10 } 11 12 set_offs() { # prev target next 13 A1=`dec_addr $1` 14 A2=`dec_addr $2` 15 A3=`dec_addr $3` 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 20 } 21 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 -v __pfx_ /proc/kallsyms | grep -A1 -B1 ${TARGET_FUNC} | cut -f 1 -d " " | xargs` 25 26 UINT_TEST=no 27 # printf "%x" -1 returns (unsigned long)-1. 28 if [ `printf "%x" -1 | wc -c` != 9 ]; then 29 UINT_TEST=yes 30 fi 31 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 38 fi
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.