History

selftests: ftrace: Add a testcase for probepoint

Add a testcase for probe point definition. This tests symbol, address and symbol+offset syntax. The offset must be positive and smaller than UINT_MAX. Link: http://lkml.kernel.org/r/152129043097.31874.14273580606301767394.stgit@devbox

Masami Hiramatsu committed 8 years ago

Commit dfa453b1 parent 5fbdbed1 file · +43 −0Browse files

Showing the changes to tools/testing (1 of 1 file). Show all

Unified · Split

tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc+43−0
@@ -0,0 +1,43 @@
1+#!/bin/sh
2+# SPDX-License-Identifier: GPL-2.0
3+# description: Kprobe events - probe points
4+
5+[ -f kprobe_events ] || exit_unsupported # this is configurable
6+
7+TARGET_FUNC=create_trace_kprobe
8+
9+dec_addr() { # hexaddr
10+ printf "%d" "0x"`echo $1 | tail -c 8`
11+}
12+
13+set_offs() { # prev target next
14+ A1=`dec_addr $1`
15+ A2=`dec_addr $2`
16+ A3=`dec_addr $3`
17+ TARGET="0x$2" # an address
18+ PREV=`expr $A1 - $A2` # offset to previous symbol
19+ NEXT=+`expr $A3 - $A2` # offset to next symbol
20+ OVERFLOW=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol
21+}
22+
23+# We have to decode symbol addresses to get correct offsets.
24+# If the offset is not an instruction boundary, it cause -EILSEQ.
25+set_offs `grep -A1 -B1 ${TARGET_FUNC} /proc/kallsyms | cut -f 1 -d " " | xargs`
26+
27+UINT_TEST=no
28+# printf "%x" -1 returns (unsigned long)-1.
29+if [ `printf "%x" -1 | wc -c` != 9 ]; then
30+ UINT_TEST=yes
31+fi
32+
33+echo 0 > events/enable
34+echo > kprobe_events
35+echo "p:testprobe ${TARGET_FUNC}" > kprobe_events
36+echo "p:testprobe ${TARGET}" > kprobe_events
37+echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
38+! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events
39+if [ "${UINT_TEST}" = yes ]; then
40+! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events
41+fi
42+echo > kprobe_events
43+clear_trace

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t