Re: Question about 'for_each_kernel_tracepoint(...)' function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 20, 2022 at 11:14 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> On Thu, 20 Oct 2022 17:32:57 +0800
> richard clark <richard.xnu.clark@xxxxxxxxx> wrote:
>
> > Hi,
> > Can this function only find the trace points defined in the kernel
>
> It should find all tracepoints.
I defined an event trace point in module B(in the header file):
...
#define TRACE_SYSTEM    cus_tp
...
TRACE_EVENT(function_event_a,
        /* all the data struct parameter is in form of pointer instead
of object */
        TP_PROTO(enum event ev),
        TP_ARGS(ev),
        ...
);

After the module B inserted, the output is:

root@robotics:/sys/kernel/debug/tracing# cat available_events | grep func
cus_tp:function_event_a

Then I inserted module A with below code snippet:

void fc(struct tracepoint *ktp, void *priv)
{
    pr_info("events: %s\n", ktp->name);
}

static int module_A_init(void)
{
    for_each_kernel_tracepoint(fc, NULL);
    return 0;
}

Then I insert the module A into the system with module B is inserted,
the dmesg shows:

root@ robotics:/home/robotics/evt-tp# dmesg | grep func
[149421.718576] events: call_function_entry
[149421.718578] events: call_function_exit
[149421.718579] events: call_function_single_entry
[149421.718581] events: call_function_single_exit

So Steve you can see that the 'for_each_kernel_tracepoint' doesn't
find the event tp defined in module B, but that tp indeed shows in
/sys/kernel/debug/tracing/available_events.

Any comments about that?

>
> > image? I want to define a trace event in my kernel module A, then B
> > module to register a probe callback function for that event TP in A. I
> > want to kick off a timer in A and call the traced function
> > periodically, thus I can monitor the events happening in A from B.
>
> You could also export the tracepoint from A and reference it directly in B.
>
> >
> > Can I do that, is it possible?
> >
>
> Try it and find out. Why ask?

Ah, as you can see that I did it, but the result is not what I
expected :-). Help?

Richard

>
> -- Steve



[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux