From: Masami Hiramatsu (Google) <[email protected]> Add a testcase for checking wprobe trigger. This sets set_wprobe and clear_wprobe triggers on fprobe events to watch dentry access. So this depends on both wprobe and fprobe.
Signed-off-by: Masami Hiramatsu (Google) <[email protected]> --- Changes in v5: - Enable CONFIG_WPROBE_TRIGGERS in the config for ftrace test. Changes in v3: - Newly added. --- tools/testing/selftests/ftrace/config | 1 .../ftrace/test.d/trigger/trigger-wprobe.tc | 48 ++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-wprobe.tc diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index d2f503722020..ecdee77f360f 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -28,3 +28,4 @@ CONFIG_TRACER_SNAPSHOT=y CONFIG_UPROBES=y CONFIG_UPROBE_EVENTS=y CONFIG_WPROBE_EVENTS=y +CONFIG_WPROBE_TRIGGERS=y diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-wprobe.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-wprobe.tc new file mode 100644 index 000000000000..a012f7b92405 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-wprobe.tc @@ -0,0 +1,48 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: event trigger - test wprobe trigger +# requires: dynamic_events "w[:[<group>/][<event>]] [r|w|rw]@<addr>[:<len>]":README events/sched/sched_process_fork/trigger + +echo 0 > tracing_on + +:;: "Add a wprobe event used by trigger" ;: +echo 'w:watch rw@0:8 address=$addr value=+0($addr)' > dynamic_events + +:;: "Add events for triggering wprobe" ;: +echo 'f:truncate do_truncate dentry=$arg2' >> dynamic_events +echo 'f:dentry_kill __dentry_kill dentry=$arg1' >> dynamic_events + +:;: "Add wprobe triggers" ;: +echo 'set_wprobe:watch:dentry' >> events/fprobes/truncate/trigger +echo 'clear_wprobe:watch:dentry' >> events/fprobes/dentry_kill/trigger +cat events/fprobes/truncate/trigger | grep ^set_wprobe +cat events/fprobes/dentry_kill/trigger | grep ^clear_wprobe + +:;: "Ensure wprobe is still disabled" ;: +cat events/wprobes/watch/enable | grep 0 + +:;: "Enable events for triggers" ;: +echo 1 >> events/fprobes/truncate/enable +echo 1 >> events/fprobes/dentry_kill/enable + +:;: "Start test workload" ;: +echo 1 >> tracing_on + +echo aaa > /tmp/hoge +echo bbb > /tmp/hoge +echo ccc > /tmp/hoge +rm /tmp/hoge + +:;: "Check trace results" ;: +cat trace | grep watch + +:;: "Ensure wprobe becomes disabled again" ;: +cat events/wprobes/watch/enable | grep 0 + +:;: "Remove wprobe triggers" ;: +echo '!set_wprobe:watch:dentry' >> events/fprobes/truncate/trigger +echo '!clear_wprobe:watch' >> events/fprobes/dentry_kill/trigger +! grep ^set_wprobe events/fprobes/truncate/trigger +! grep ^clear_wprobe events/fprobes/dentry_kill/trigger + +exit 0 \ No newline at end of file
