brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · 6842598 Raw
39 lines · plain
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.03# description: Kprobe events - probe points4# requires: kprobe_events5 6TARGET_FUNC=tracefs_create_dir7 8dec_addr() { # hexaddr9  printf "%d" "0x"`echo $1 | tail -c 8`10}11 12set_offs() { # prev target next13  A1=`dec_addr $1`14  A2=`dec_addr $2`15  A3=`dec_addr $3`16  TARGET="0x$2" # an address17  PREV=`expr $A1 - $A2` # offset to previous symbol18  NEXT=+`expr $A3 - $A2` # offset to next symbol19  OVERFLOW=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol20}21 22# We have to decode symbol addresses to get correct offsets.23# If the offset is not an instruction boundary, it cause -EILSEQ.24set_offs `grep -v __pfx_ /proc/kallsyms | grep -A1 -B1 ${TARGET_FUNC} | cut -f 1 -d " " | xargs`25 26UINT_TEST=no27# printf "%x" -1 returns (unsigned long)-1.28if [ `printf "%x" -1 | wc -c` != 9 ]; then29  UINT_TEST=yes30fi31 32echo "p:testprobe ${TARGET_FUNC}" > kprobe_events33echo "p:testprobe ${TARGET}" > kprobe_events34echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events35! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events36if [ "${UINT_TEST}" = yes ]; then37! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events38fi39