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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/