From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Andrew Morton <akpm@linux-foundation.org>,
Alice Ryhl <aliceryhl@google.com>
Subject: [for-next][PATCH 15/15] tracepoint: Reduce duplication of __DO_TRACE_CALL
Date: Thu, 26 Dec 2024 09:39:29 -0500 [thread overview]
Message-ID: <20241226143937.193151704@goodmis.org> (raw)
In-Reply-To: <20241226143914.397394975@goodmis.org>
From: Alice Ryhl <aliceryhl@google.com>
The logic for invoking __DO_TRACE_CALL was extracted to a static inline
function called __rust_do_trace_##name so that Rust can call it
directly. This logic does not include the static branch, to avoid a
function call when the tracepoint is disabled.
Since the C code needs to perform the same logic after checking the
static key, this logic is currently duplicated. Thus, remove this
duplication by having C call the static inline function too.
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://lore.kernel.org/20241212131237.1988409-1-aliceryhl@google.com
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
include/linux/tracepoint.h | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index 76d9055b2cff..a351763e6965 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -218,7 +218,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
#define __DEFINE_RUST_DO_TRACE(name, proto, args) \
notrace void rust_do_trace_##name(proto) \
{ \
- __rust_do_trace_##name(args); \
+ __do_trace_##name(args); \
}
/*
@@ -268,7 +268,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
#define __DECLARE_TRACE(name, proto, args, cond, data_proto) \
__DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
- static inline void __rust_do_trace_##name(proto) \
+ static inline void __do_trace_##name(proto) \
{ \
if (cond) { \
guard(preempt_notrace)(); \
@@ -277,12 +277,8 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
} \
static inline void trace_##name(proto) \
{ \
- if (static_branch_unlikely(&__tracepoint_##name.key)) { \
- if (cond) { \
- guard(preempt_notrace)(); \
- __DO_TRACE_CALL(name, TP_ARGS(args)); \
- } \
- } \
+ if (static_branch_unlikely(&__tracepoint_##name.key)) \
+ __do_trace_##name(args); \
if (IS_ENABLED(CONFIG_LOCKDEP) && (cond)) { \
WARN_ONCE(!rcu_is_watching(), \
"RCU not watching for tracepoint"); \
@@ -291,7 +287,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
#define __DECLARE_TRACE_SYSCALL(name, proto, args, data_proto) \
__DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
- static inline void __rust_do_trace_##name(proto) \
+ static inline void __do_trace_##name(proto) \
{ \
guard(rcu_tasks_trace)(); \
__DO_TRACE_CALL(name, TP_ARGS(args)); \
@@ -299,10 +295,8 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
static inline void trace_##name(proto) \
{ \
might_fault(); \
- if (static_branch_unlikely(&__tracepoint_##name.key)) { \
- guard(rcu_tasks_trace)(); \
- __DO_TRACE_CALL(name, TP_ARGS(args)); \
- } \
+ if (static_branch_unlikely(&__tracepoint_##name.key)) \
+ __do_trace_##name(args); \
if (IS_ENABLED(CONFIG_LOCKDEP)) { \
WARN_ONCE(!rcu_is_watching(), \
"RCU not watching for tracepoint"); \
--
2.45.2
prev parent reply other threads:[~2024-12-26 14:38 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-26 14:39 [for-next][PATCH 00/15] tracing: Updates for v6.14 Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 01/15] tracing: Switch trace.c code over to use guard() Steven Rostedt
2024-12-28 10:40 ` Markus Elfring
2024-12-26 14:39 ` [for-next][PATCH 02/15] tracing: Return -EINVAL if a boot tracer tries to enable the mmiotracer at boot Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 03/15] tracing: Have event_enable_write() just return error on error Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 04/15] tracing: Simplify event_enable_func() goto out_free logic Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 05/15] tracing: Simplify event_enable_func() goto_reg logic Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 06/15] tracing: Switch trace_events.c code over to use guard() Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 07/15] tracing: Switch trace_events_hist.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 08/15] tracing: Switch trace_events_trigger.c " Steven Rostedt
2024-12-28 13:52 ` Markus Elfring
2024-12-26 14:39 ` [for-next][PATCH 09/15] tracing: Switch trace_events_filter.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 10/15] tracing: Switch trace_events_synth.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 11/15] tracing: Switch trace_osnoise.c code over to use guard() and __free() Steven Rostedt
2024-12-28 14:01 ` Markus Elfring
2024-12-26 14:39 ` [for-next][PATCH 12/15] tracing: Switch trace_stack.c code over to use guard() Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 13/15] tracing: Switch trace_stat.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 14/15] tracing/string: Create and use __free(argv_free) in trace_dynevent.c Steven Rostedt
2024-12-26 14:39 ` Steven Rostedt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241226143937.193151704@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=aliceryhl@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®