[PATCH 0/6] uprobes/tracing: uretprobes

From: Oleg Nesterov
Date: Mon Apr 01 2013 - 12:11:11 EST


On 03/29, Oleg Nesterov wrote:
>
> 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.

And the rest of the necessary changes to support uretprobes.

To remind, this is on top of Anton's uretprobes implementation which is
not finished yet. This series can't be even compiled, but I think it can
be already reviewed. All it needs to compile is the new
uprobe_consumer->ret_handler().

Oleg.

kernel/trace/trace_uprobe.c | 152 +++++++++++++++++++++++++++++++++++--------
1 files changed, 124 insertions(+), 28 deletions(-)

--
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/