lkml.org 
[lkml]   [2010]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 11/11] Uprobes traceevents patch.
Hi Steven,

Steven Rostedt wrote:
> On Wed, 2010-03-31 at 21:23 +0530, Srikar Dronamraju wrote:
>
>> libftrace-y := ftrace.o
>> diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
>> index 2825ef2..9fe02ab 100644
>> --- a/kernel/trace/trace.h
>> +++ b/kernel/trace/trace.h
>> @@ -126,6 +126,18 @@ struct kretprobe_trace_entry {
>> (offsetof(struct kretprobe_trace_entry, args) + \
>> (sizeof(unsigned long) * (n)))
>>
>> +struct uprobe_trace_entry {
>> + struct trace_entry ent;
>> + pid_t pid;
>
> Unless pid is not the current pid, ent already records it.

Indeed.

>> + unsigned long ip;
>> + int nargs;
>> + unsigned long args[];
>> +};
>
> Note, you want to really add this to trace_entries.h instead:
>
> FTRACE_ENTRY(uprobe, uprobe_trace_entry,
>
> TRACE_GRAPH_ENT,
>
> F_STRUCT(
> __field( unsigned long, ip )
> __field( int, nargs )
> __dynamic_array(unsigned long, args )
> ),
>
> F_printk("%lx nrargs:%u", __entry->ip, __entry->nargs)
> );
>
>
> This will put this event into the events/ftrace directory. Don't worry
> about the printk format, we can write a plugin for it to override it if
> need be.

Hmm, interesting idea. But this dynamic event definition allows us
to filter events based on each argument value.

As you can see this code,

>> +struct probe_arg {
>> + struct fetch_func fetch;
>> + const char *name;
>> +};

each argument can have unique name. Therefore user can write a filter
by using these names.

Moreover, dynamic events (at least kprobe-tracer) are going to support
'types' for each argument. this means that the arg[] in *probe_trace_entry
will be no longer an unsigned long array.

Thank you,

--
Masami Hiramatsu
e-mail: mhiramat@redhat.com


\
 
 \ /
  Last update: 2010-04-01 06:21    [W:0.106 / U:0.144 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site