On Fri, Apr 18, 2025 at 11:01:04AM -0400, Steven Rostedt wrote:
> From: Steven Rostedt <[email protected]>
> 
> Most tracepoints in the kernel are created with TRACE_EVENT(). The
> TRACE_EVENT() macro (and DECLARE_EVENT_CLASS() and DEFINE_EVENT() where in
> reality, TRACE_EVENT() is just a helper macro that calls those other two
> macros), will create not only a tracepoint (the function trace_<event>()
> used in the kernel), it also exposes the tracepoint to user space along
> with defining what fields will be saved by that tracepoint.
> 
> There are a few places that tracepoints are created in the kernel that are
> not exposed to userspace via tracefs. They can only be accessed from code
> within the kernel. These tracepoints are created with DEFINE_TRACE()
> 
> Most of these tracepoints end with "_tp". This is useful as when the
> developer sees that, they know that the tracepoint is for in-kernel only
> and is not exposed to user space.
> 
> Instead of making this only a process to add "_tp", enforce it by making
> the DECLARE_TRACE() append the "_tp" suffix to the tracepoint. This
> requires adding DECLARE_TRACE_EVENT() macros for the TRACE_EVENT() macro
> to use that keeps the original name.
> 
> Link: https://lore.kernel.org/all/[email protected]/
> 
> Signed-off-by: Steven Rostedt (Google) <[email protected]>
> ---
>  include/linux/tracepoint.h   | 38 ++++++++++++++++++++++++------------
>  include/trace/bpf_probe.h    |  4 ++--
>  include/trace/define_trace.h | 17 +++++++++++++++-
>  include/trace/events/sched.h | 30 ++++++++++++++--------------
>  include/trace/events/tcp.h   |  2 +-
>  5 files changed, 60 insertions(+), 31 deletions(-)
> 
> diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
> index a351763e6965..826ce3f8e1f8 100644
> --- a/include/linux/tracepoint.h
> +++ b/include/linux/tracepoint.h
> @@ -464,16 +464,30 @@ static inline struct tracepoint 
> *tracepoint_ptr_deref(tracepoint_ptr_t *p)
>  #endif
>  
>  #define DECLARE_TRACE(name, proto, args)                             \
> -     __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> +     __DECLARE_TRACE(name##_tp, PARAMS(proto), PARAMS(args),         \
>                       cpu_online(raw_smp_processor_id()),             \
>                       PARAMS(void *__data, proto))
>  
>  #define DECLARE_TRACE_CONDITION(name, proto, args, cond)             \
> -     __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> +     __DECLARE_TRACE(name##_tp, PARAMS(proto), PARAMS(args),         \
>                       cpu_online(raw_smp_processor_id()) && (PARAMS(cond)), \
>                       PARAMS(void *__data, proto))
>  
>  #define DECLARE_TRACE_SYSCALL(name, proto, args)                     \
> +     __DECLARE_TRACE_SYSCALL(name##_tp, PARAMS(proto), PARAMS(args), \
> +                             PARAMS(void *__data, proto))
> +
> +#define DECLARE_TRACE_EVENT(name, proto, args)                               
> \
> +     __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> +                     cpu_online(raw_smp_processor_id()),             \
> +                     PARAMS(void *__data, proto))
> +
> +#define DECLARE_TRACE_EVENT_CONDITION(name, proto, args, cond)               
> \
> +     __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> +                     cpu_online(raw_smp_processor_id()) && (PARAMS(cond)), \
> +                     PARAMS(void *__data, proto))
> +
> +#define DECLARE_TRACE_EVENT_SYSCALL(name, proto, args)                       
> \
>       __DECLARE_TRACE_SYSCALL(name, PARAMS(proto), PARAMS(args),      \
>                               PARAMS(void *__data, proto))
>  
> @@ -591,32 +605,32 @@ static inline struct tracepoint 
> *tracepoint_ptr_deref(tracepoint_ptr_t *p)
>  
>  #define DECLARE_EVENT_CLASS(name, proto, args, tstruct, assign, print)
>  #define DEFINE_EVENT(template, name, proto, args)            \
> -     DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
> +     DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
>  #define DEFINE_EVENT_FN(template, name, proto, args, reg, unreg)\
> -     DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
> +     DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
>  #define DEFINE_EVENT_PRINT(template, name, proto, args, print)       \
> -     DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
> +     DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
>  #define DEFINE_EVENT_CONDITION(template, name, proto,                \
>                              args, cond)                      \
> -     DECLARE_TRACE_CONDITION(name, PARAMS(proto),            \
> +     DECLARE_TRACE_EVENT_CONDITION(name, PARAMS(proto),      \
>                               PARAMS(args), PARAMS(cond))
>  
>  #define TRACE_EVENT(name, proto, args, struct, assign, print)        \
> -     DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
> +     DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
>  #define TRACE_EVENT_FN(name, proto, args, struct,            \
>               assign, print, reg, unreg)                      \
> -     DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
> -#define TRACE_EVENT_FN_COND(name, proto, args, cond, struct,         \
> +     DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> +#define TRACE_EVENT_FN_COND(name, proto, args, cond, struct, \
>               assign, print, reg, unreg)                      \
> -     DECLARE_TRACE_CONDITION(name, PARAMS(proto),    \
> +     DECLARE_TRACE_EVENT_CONDITION(name, PARAMS(proto),      \
>                       PARAMS(args), PARAMS(cond))
>  #define TRACE_EVENT_CONDITION(name, proto, args, cond,               \
>                             struct, assign, print)            \
> -     DECLARE_TRACE_CONDITION(name, PARAMS(proto),            \
> +     DECLARE_TRACE_EVENT_CONDITION(name, PARAMS(proto),      \
>                               PARAMS(args), PARAMS(cond))
>  #define TRACE_EVENT_SYSCALL(name, proto, args, struct, assign,       \
>                           print, reg, unreg)                  \
> -     DECLARE_TRACE_SYSCALL(name, PARAMS(proto), PARAMS(args))
> +     DECLARE_TRACE_EVENT_SYSCALL(name, PARAMS(proto), PARAMS(args))
>  
>  #define TRACE_EVENT_FLAGS(event, flag)
>  
> diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h
> index 183fa2aa2935..fbfe83b939ac 100644
> --- a/include/trace/bpf_probe.h
> +++ b/include/trace/bpf_probe.h
> @@ -119,8 +119,8 @@ static inline void bpf_test_buffer_##call(void)           
>                 \
>  
>  #undef DECLARE_TRACE
>  #define DECLARE_TRACE(call, proto, args)                             \
> -     __BPF_DECLARE_TRACE(call, PARAMS(proto), PARAMS(args))          \
> -     __DEFINE_EVENT(call, call, PARAMS(proto), PARAMS(args), 0)
> +     __BPF_DECLARE_TRACE(call##_tp, PARAMS(proto), PARAMS(args))             
> \
> +     __DEFINE_EVENT(call##_tp, call##_tp, PARAMS(proto), PARAMS(args), 0)
>  
>  #undef DECLARE_TRACE_WRITABLE
>  #define DECLARE_TRACE_WRITABLE(call, proto, args, size) \

hi,
do we need the change also for DECLARE_TRACE_WRITABLE?
I needed change below for bpf selftest kmod

jirka


---
diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h
index fbfe83b939ac..9391d54d3f12 100644
--- a/include/trace/bpf_probe.h
+++ b/include/trace/bpf_probe.h
@@ -125,8 +125,8 @@ static inline void bpf_test_buffer_##call(void)             
                \
 #undef DECLARE_TRACE_WRITABLE
 #define DECLARE_TRACE_WRITABLE(call, proto, args, size) \
        __CHECK_WRITABLE_BUF_SIZE(call, PARAMS(proto), PARAMS(args), size) \
-       __BPF_DECLARE_TRACE(call, PARAMS(proto), PARAMS(args)) \
-       __DEFINE_EVENT(call, call, PARAMS(proto), PARAMS(args), size)
+       __BPF_DECLARE_TRACE(call##_tp, PARAMS(proto), PARAMS(args)) \
+       __DEFINE_EVENT(call##_tp, call##_tp, PARAMS(proto), PARAMS(args), size)
 
 #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
 
diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h 
b/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h
index aeef86b3da74..2bac14ef507f 100644
--- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h
+++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h
@@ -42,7 +42,7 @@ DECLARE_TRACE(bpf_testmod_test_nullable_bare,
 
 struct sk_buff;
 
-DECLARE_TRACE(bpf_testmod_test_raw_tp_null,
+DECLARE_TRACE(bpf_testmod_test_raw_null,
        TP_PROTO(struct sk_buff *skb),
        TP_ARGS(skb)
 );
diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c 
b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
index f38eaf0d35ef..dd9b806d255e 100644
--- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
+++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
@@ -413,7 +413,7 @@ bpf_testmod_test_read(struct file *file, struct kobject 
*kobj,
 
        (void)bpf_testmod_test_arg_ptr_to_struct(&struct_arg1_2);
 
-       (void)trace_bpf_testmod_test_raw_tp_null(NULL);
+       (void)trace_bpf_testmod_test_raw_null_tp(NULL);
 
        bpf_testmod_test_struct_ops3();
 
@@ -431,14 +431,14 @@ bpf_testmod_test_read(struct file *file, struct kobject 
*kobj,
        if (bpf_testmod_loop_test(101) > 100)
                trace_bpf_testmod_test_read(current, &ctx);
 
-       trace_bpf_testmod_test_nullable_bare(NULL);
+       trace_bpf_testmod_test_nullable_bare_tp(NULL);
 
        /* Magic number to enable writable tp */
        if (len == 64) {
                struct bpf_testmod_test_writable_ctx writable = {
                        .val = 1024,
                };
-               trace_bpf_testmod_test_writable_bare(&writable);
+               trace_bpf_testmod_test_writable_bare_tp(&writable);
                if (writable.early_ret)
                        return snprintf(buf, len, "%d\n", writable.val);
        }
@@ -470,7 +470,7 @@ bpf_testmod_test_write(struct file *file, struct kobject 
*kobj,
                .len = len,
        };
 
-       trace_bpf_testmod_test_write_bare(current, &ctx);
+       trace_bpf_testmod_test_write_bare_tp(current, &ctx);
 
        return -EIO; /* always fail */
 }

Reply via email to