Extend the fprobe event interface to accept comma-separated symbol lists
with ! exclusion prefix, and :entry/:exit suffixes as an alternative to
%return. Single-symbol probes retain full backward compatibility with
%return.
Example usage:
f:mygroup/myevent vfs_read,!vfs_write,vfs_open:entry
f:mygroup/myexit vfs_read,vfs_open:exit
Changes since v5:
- Fix missing closing brace in the empty-token check that caused a
build error.
- Remove redundant strchr/strstr checks for tracepoint validation;
the character validation loop already rejects ',', ':', and '%'.
- Add trace_probe_log_err() to the tracepoint character validation
loop so users see what went wrong in tracefs/error_log (reviewer
feedback from Masami Hiramatsu).
- Remove unnecessary braces around single-statement if per kernel
coding style (reviewer feedback).
- Extract list parsing into parse_fprobe_list() to keep
parse_fprobe_spec() focused (reviewer feedback).
- New patch 2/4: add glob_match_comma_list() in kernel/trace/fprobe.c
so register_fprobe() correctly handles comma-separated filter
strings. Without this, enabling a list-mode fprobe event failed
with "Could not enable event" because glob_match() does not
understand commas.
- Reorder: documentation patch now comes after all code changes.
- Updated selftest commit message to note that existing tests
(add_remove_fprobe.tc, fprobe_syntax_errors.tc,
add_remove_fprobe_repeat.tc) report UNSUPPORTED because their
"requires" lines still check for the old %return syntax in README.
Their requires lines need updating in a follow-up patch.
Tested in QEMU/KVM but I am not too confident if I configured correctly and
would like to ask for further testing.
Seokwoo Chung (Ryan) (4):
tracing/fprobe: Support comma-separated symbols and :entry/:exit
fprobe: Support comma-separated filters in register_fprobe()
docs: tracing/fprobe: Document list filters and :entry/:exit
selftests/ftrace: Add accept cases for fprobe list syntax
Documentation/trace/fprobetrace.rst | 17 +-
kernel/trace/fprobe.c | 30 ++-
kernel/trace/trace.c | 3 +-
kernel/trace/trace_fprobe.c | 219 ++++++++++++++----
.../ftrace/test.d/dynevent/fprobe_list.tc | 92 ++++++++
5 files changed, 308 insertions(+), 53 deletions(-)
create mode 100644 tools/testing/selftests/ftrace/test.d/dynevent/fprobe_list.tc
--
2.43.0