[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4BB41E38.8080406@redhat.com>
Date: Thu, 01 Apr 2010 00:16:56 -0400
From: Masami Hiramatsu <mhiramat@...hat.com>
To: rostedt@...dmis.org
CC: Srikar Dronamraju <srikar@...ux.vnet.ibm.com>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...e.hu>,
Andrew Morton <akpm@...ux-foundation.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Randy Dunlap <rdunlap@...otime.net>,
Ananth N Mavinakayanahalli <ananth@...ibm.com>,
Jim Keniston <jkenisto@...ux.vnet.ibm.com>,
Frederic Weisbecker <fweisbec@...il.com>,
"Frank Ch. Eigler" <fche@...hat.com>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: [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@...hat.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists