[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250121101551.2ad87b73@gandalf.local.home>
Date: Tue, 21 Jan 2025 10:15:51 -0500
From: Steven Rostedt <rostedt@...dmis.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: LKML <linux-kernel@...r.kernel.org>, Masami Hiramatsu
<mhiramat@...nel.org>, Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Alice Ryhl <aliceryhl@...gle.com>
Subject: [GIT PULL v2] tracing: Updates for v6.14
Linus,
tracing updates for v6.14:
- Cleanup with guard() and free() helpers
There were several places in the code that had a lot of "goto out" in the
error paths to either unlock a lock or free some memory that was
allocated. But this is error prone. Convert the code over to use the
guard() and free() helpers that let the compiler unlock locks or free
memory when the function exits.
- Update the Rust tracepoint code to use the C code too
There was some duplication of the tracepoint code for Rust that did the
same logic as the C code. Add a helper that makes it possible for both
algorithms to use the same logic in one place.
- Add poll to trace event hist files
It is useful to know when an event is triggered, or even with some
filtering. Since hist files of events get updated when active and the
event is triggered, allow applications to poll the hist file and wake up
when an event is triggered. This will let the application know that the
event it is waiting for happened.
- Add :mod: command to enable events for current or future modules
The function tracer already has a way to enable functions to be traced in
modules by writing ":mod:<module>" into set_ftrace_filter. That will
enable either all the functions for the module if it is loaded, or if it
is not, it will cache that command, and when the module is loaded that
matches <module>, its functions will be enabled. This also allows init
functions to be traced. But currently events do not have that feature.
Add the command where if ':mod:<module>' is written into set_event, then
either all the modules events are enabled if it is loaded, or cache it so
that the module's events are enabled when it is loaded. This also works
from the kernel command line, where "trace_event=:mod:<module>", when the
module is loaded at boot up, its events will be enabled then.
Changes since v1: https://lore.kernel.org/all/20250119192902.576eda90@gandalf.local.home/
- Fixed the "#if CONFIG_MODULES" to be "#ifdef CONFIG_MODULES"
- Renamed static function update_cache() to update_mod_cache() as riscv had
a header with the update_cache() function in it, and it would conflict
with the prototypes.
Please pull the latest trace-v6.14-2 tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
trace-v6.14-2
Tag SHA1: 1d2136e320764770b58caefc9476a55cad874f54
Head SHA1: 22412b72cafd1b2570c2f9f14b7a133bdff8b80c
Alice Ryhl (1):
tracepoint: Reduce duplication of __DO_TRACE_CALL
Masami Hiramatsu (Google) (3):
tracing/hist: Add poll(POLLIN) support on hist file
tracing/hist: Support POLLPRI event for poll on histogram
selftests/tracing: Add hist poll() support test
Steven Rostedt (20):
tracing: Switch trace.c code over to use guard()
tracing: Return -EINVAL if a boot tracer tries to enable the mmiotracer at boot
tracing: Have event_enable_write() just return error on error
tracing: Simplify event_enable_func() goto out_free logic
tracing: Simplify event_enable_func() goto_reg logic
tracing: Switch trace_events.c code over to use guard()
tracing: Switch trace_events_hist.c code over to use guard()
tracing: Switch trace_events_trigger.c code over to use guard()
tracing: Switch trace_events_filter.c code over to use guard()
tracing: Switch trace_events_synth.c code over to use guard()
tracing: Switch trace_osnoise.c code over to use guard() and __free()
tracing: Switch trace_stack.c code over to use guard()
tracing: Switch trace_stat.c code over to use guard()
tracing/string: Create and use __free(argv_free) in trace_dynevent.c
tracing: Fix using ret variable in tracing_set_tracer()
tracing: Add :mod: command to enabled module events
tracing: Cache ":mod:" events for modules not loaded yet
selftests/ftrace: Add test that tests event :mod: commands
tracing: Fix #if CONFIG_MODULES to #ifdef CONFIG_MODULES
tracing: Rename update_cache() to update_mod_cache()
----
Documentation/admin-guide/kernel-parameters.txt | 8 +
Documentation/trace/events.rst | 24 ++
include/linux/string.h | 3 +
include/linux/trace_events.h | 14 +
include/linux/tracepoint.h | 20 +-
kernel/trace/ftrace.c | 17 -
kernel/trace/trace.c | 297 ++++++-------
kernel/trace/trace.h | 12 +
kernel/trace/trace_dynevent.c | 23 +-
kernel/trace/trace_events.c | 465 ++++++++++++++++-----
kernel/trace/trace_events_filter.c | 23 +-
kernel/trace/trace_events_hist.c | 119 +++++-
kernel/trace/trace_events_synth.c | 17 +-
kernel/trace/trace_events_trigger.c | 67 +--
kernel/trace/trace_osnoise.c | 40 +-
kernel/trace/trace_stack.c | 6 +-
kernel/trace/trace_stat.c | 26 +-
tools/testing/selftests/ftrace/Makefile | 2 +
tools/testing/selftests/ftrace/poll.c | 74 ++++
.../selftests/ftrace/test.d/event/event-mod.tc | 191 +++++++++
.../ftrace/test.d/trigger/trigger-hist-poll.tc | 74 ++++
21 files changed, 1047 insertions(+), 475 deletions(-)
create mode 100644 tools/testing/selftests/ftrace/poll.c
create mode 100644 tools/testing/selftests/ftrace/test.d/event/event-mod.tc
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-poll.tc
---------------------------
Powered by blists - more mailing lists