Re: [PATCH v2 11/11] Uprobes traceevents patch.

From: Frederic Weisbecker
Date: Wed May 12 2010 - 10:58:00 EST


On Thu, Apr 01, 2010 at 12:16:56AM -0400, Masami Hiramatsu wrote:
> 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,


Yeah, I don't think we should FTRACE_ENTRY for that. The format files for
[k|u]probes events are created dynamically on top of what the user requested,
which is a very nice feature.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/