[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130329181520.GA20670@redhat.com>
Date: Fri, 29 Mar 2013 19:15:20 +0100
From: Oleg Nesterov <oleg@...hat.com>
To: Ananth N Mavinakayanahalli <ananth@...ibm.com>,
Srikar Dronamraju <srikar@...ux.vnet.ibm.com>,
Steven Rostedt <rostedt@...dmis.org>
Cc: Anton Arapov <anton@...hat.com>,
Frederic Weisbecker <fweisbec@...il.com>,
Ingo Molnar <mingo@...hat.com>, linux-kernel@...r.kernel.org
Subject: [PATCH 0/4] uprobes/tracing: uretprobes, initial preparations
Hello.
uretprobes code is almost ready, we need to teach trace_uprobe.c
to support them.
This looks simple, but there is a nasty complication. We do not
want to copy-and-paste the code like trace_kprobe.c does. Just look
at kprobe_event_define_fields() and kretprobe_event_define_fields().
They are non-trivial but almost identical. And there are a lot more
examples.
So I'd like to send 4/4 for review before I'll do other changes.
The patch itself doesn't make sense and complicates the source code a
bit. But note how easy we can change, say, uprobe_event_define_fields(),
- DEFINE_FIELD(vaddr[0], FIELD_STRING_IP);
- size = SIZEOF_TRACE_ENTRY(1);
+ if (!trace_probe_is_return(tu)) {
+ DEFINE_FIELD(vaddr[0], FIELD_STRING_IP);
+ size = SIZEOF_TRACE_ENTRY(1);
+ } else {
+ DEFINE_FIELD(vaddr[0], FIELD_STRING_FUNC);
+ DEFINE_FIELD(vaddr[1], FIELD_STRING_RETIP);
+ size = SIZEOF_TRACE_ENTRY(2);
+ }
without copy-and-paste. The same simple change is possible for other
helpers playing with uprobe_trace_entry_head.
In fact personally I think that trace_kprobe.c should be cleanuped
this way.
Off-topic question... Why uprobe_perf_func() passes "addr = ip" to
perf_trace_buf_submit() ? This just sets perf_sample_data->addr for
PERF_SAMPLE_ADDR, do we really need this? and we already have
perf_sample_data->ip initialized by perf. Just curious.
Oleg.
kernel/trace/trace.h | 5 ---
kernel/trace/trace_uprobe.c | 77 +++++++++++++++++++++----------------------
2 files changed, 38 insertions(+), 44 deletions(-)
--
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