On Wed, 22 Jan 2025 01:39:42 -0800
Breno Leitao <lei...@debian.org> wrote:

> Right, DECLARE_TRACE would solve my current problem, but, a056a5bed7fa
> ("sched/debug: Export the newly added tracepoints") says "BPF doesn't
> have infrastructure to access these bare tracepoints either.".
> 
> Does BPF know how to attach to this bare tracepointers now?
> 
> On the other side, it seems real tracepoints is getting more pervasive?
> So, this current approach might be OK also?
> 
>       
> https://lore.kernel.org/bpf/20250118033723.GV1977892@ZenIV/T/#m4c2fb2d904e839b34800daf8578dff0b9abd69a0

Thanks for the pointer. I didn't know this discussion was going on. I just
asked to attend if this gets accepted. I'm only a 6 hour drive from
Montreal anyway.

> 
> > You can see its use in include/trace/events/sched.h  
> 
> I suppose I need to export the tracepointer with
> EXPORT_TRACEPOINT_SYMBOL_GPL(), right?

For modules to use them directly, yes. But there's other ways too.

> 
> I am trying to hack something as the following, but, I struggled to hook
> BPF into it.

Maybe you can use the iterator to search for the tracepoint.

#include <linux/tracepoint.h>

static void fct(struct tracepoint *tp, void *priv)
{
        if (!tp->name || strcmp(tp->name, "<tracepoint_name>") != 0)
                return 0;

        // attach to tracepoint tp
}

[..]
        for_each_kernel_tracepoint(fct, NULL);

This is how LTTng hooks to tracepoints.

-- Steve


Reply via email to