[DTrace-devel] sdt provider and access to the trace_event_raw_* struct

Alan Maguire alan.maguire at oracle.com
Fri Oct 4 15:46:58 UTC 2024


On 04/10/2024 15:29, Kris Van Hees wrote:
> On Fri, Oct 04, 2024 at 12:29:35PM +0100, Alan Maguire wrote:
>> hi folks
>>
>> I've come across a case where I need to trace a kernel tracepoint with a
>> lot of associated trace info.  It seems that the current approach for
>> sdt probes looks at the "struct trace_event_raw_<tracepoint_name>"
>> structure and maps its fields into args[] values, translating each
>> member into a separate argument.  That works great for tracepoints with
>> a limited number of fields. However in the case of a tracepoint with a
>> lot of such fields (i.e. more than the number of args[] supported), it
>> would be useful to also have a convenient way to access the raw "struct
>> trace_event_raw_*" data, especially since we have access to it directly
>> via CTF. It's possible to do this via a hack, e.g. the following works:
> 
> You should be able to use the raw tracepoint provider, rawtp,
> e.g. rawtp:sched::sched_switch
>

That's a good help, but I should have clarified that I was hoping for a
way to get the tracepoint data _after_ it has been massaged into the
tracepoint form; the above will give me access to the raw arguments that
are used in tracepoint data setup, but I was hoping to have a way to get
a pointer to the entire trace structure after it has been assigned. It's
doable in my case (since the first parameter is always a reference) so
not a massive deal, but it might be useful enhancement for others.

Thanks!

Alan

>> #!/usr/sbin/dtrace -s
>>
>> sdt:sched::sched_switch
>> {
>>         s = (struct trace_event_raw_sched_switch *)(arg0-8);
>>         print(s);
>> }
>>
>>
>> ...but presumably that only works because the first arg value isn't
>> scalar. It would be good to have a helper or builtin variable to access
>> this pointer directly. Maybe there's a better way to do this, or maybe
>> we could add a helper/builtin to make this pointer accessible? What do
>> folks think?
>>
>> Thanks!
>>
>> Alan




More information about the DTrace-devel mailing list