1dfa453bcSMasami Hiramatsu#!/bin/sh 2dfa453bcSMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0 3dfa453bcSMasami Hiramatsu# description: Kprobe events - probe points 43591e90fSMasami Hiramatsu# requires: kprobe_events 5dfa453bcSMasami Hiramatsu 66fc7c411SMasami HiramatsuTARGET_FUNC=tracefs_create_dir 7dfa453bcSMasami Hiramatsu 8dfa453bcSMasami Hiramatsudec_addr() { # hexaddr 9dfa453bcSMasami Hiramatsu printf "%d" "0x"`echo $1 | tail -c 8` 10dfa453bcSMasami Hiramatsu} 11dfa453bcSMasami Hiramatsu 12dfa453bcSMasami Hiramatsuset_offs() { # prev target next 13dfa453bcSMasami Hiramatsu A1=`dec_addr $1` 14dfa453bcSMasami Hiramatsu A2=`dec_addr $2` 15dfa453bcSMasami Hiramatsu A3=`dec_addr $3` 16dfa453bcSMasami Hiramatsu TARGET="0x$2" # an address 17dfa453bcSMasami Hiramatsu PREV=`expr $A1 - $A2` # offset to previous symbol 18dfa453bcSMasami Hiramatsu NEXT=+`expr $A3 - $A2` # offset to next symbol 19dfa453bcSMasami Hiramatsu OVERFLOW=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol 20dfa453bcSMasami Hiramatsu} 21dfa453bcSMasami Hiramatsu 22dfa453bcSMasami Hiramatsu# We have to decode symbol addresses to get correct offsets. 23dfa453bcSMasami Hiramatsu# If the offset is not an instruction boundary, it cause -EILSEQ. 24*96cd93afSMasami Hiramatsu (Google)set_offs `grep -v __pfx_ /proc/kallsyms | grep -A1 -B1 ${TARGET_FUNC} | cut -f 1 -d " " | xargs` 25dfa453bcSMasami Hiramatsu 26dfa453bcSMasami HiramatsuUINT_TEST=no 27dfa453bcSMasami Hiramatsu# printf "%x" -1 returns (unsigned long)-1. 28dfa453bcSMasami Hiramatsuif [ `printf "%x" -1 | wc -c` != 9 ]; then 29dfa453bcSMasami Hiramatsu UINT_TEST=yes 30dfa453bcSMasami Hiramatsufi 31dfa453bcSMasami Hiramatsu 32dfa453bcSMasami Hiramatsuecho "p:testprobe ${TARGET_FUNC}" > kprobe_events 33dfa453bcSMasami Hiramatsuecho "p:testprobe ${TARGET}" > kprobe_events 34dfa453bcSMasami Hiramatsuecho "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events 35dfa453bcSMasami Hiramatsu! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events 36dfa453bcSMasami Hiramatsuif [ "${UINT_TEST}" = yes ]; then 37dfa453bcSMasami Hiramatsu! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events 38dfa453bcSMasami Hiramatsufi 39