Re: [RFC PATCH 0/5] tracing: Unifying dynamic event interface

From: Tom Zanussi
Date: Mon Oct 01 2018 - 09:49:36 EST


Hi Masami,

On Fri, 2018-09-28 at 00:58 +0900, Masami Hiramatsu wrote:
> Hi,
>
> This is an RFC series of unifying dynamic event interface on ftrace.
> Currently ftrace has 3 dynamic event interfaces, kprobes, uprobes
> and synthetic. This series unifies kprobes and uprobes event
> interface on "dynamic_events". This enables us to add new dynamic
> events easily on same interface, e.g. function events.

This seems like a nice idea to me and I don't see any problems with the
patches themselves, so consider it

Acked-by: Tom Zanussi <tom.zanussi@xxxxxxxxxxxxxxx>

> The older interfaces are left on the tracefs for backward
> compatibility at this moment.
>
> dynamic_events syntax has no different from kprobe_events and
> uprobe_events. You can use same syntax for dynamic_events interface.
>
> I think we can integrate synthetic events to this dynamic_events
> interface but it will requires new syntax. e.g.
>
> echo "s:<event-name> <args>" >> dynamic_events
>

So that's just the existing syntax, prefaced by s: , right?

> If it is OK, I'll add it in next version.
>

Makes sense to me.

> BTW, since this dynamic_events interface derived from *probe_events,
> it inherits "all clear when truncate file open" behavior. But if you
> think this is too aggressive, I can drop it. (even in that case,
> kprobe_events/uprobe_events behavior is not changed)
>
> I also introduced a widely used way to erase entries in other
> interfaces of ftrace, that is '!'. So you can now use '!event-name'
> or '!group/event' to erase an entry in dynamic_events.
> (Wait... it has to be '!p:event' as others do??)
>

I'd think the full form should always be accepted, but would only be
necessary in cases requiring disambiguation.

Thanks,

Tom

> Any thought?
>
> Thank you,
>
> ---
>
> Masami Hiramatsu (5):
> tracing/uprobes: Add busy check when cleanup all uprobes
> tracing: Add a unified dynamic event framework
> tracing/kprobes: Use dyn_event framework for kprobe events
> tracing/uprobes: Use dyn_event framework for uprobe events
> tracing: Add generic event-name based remove event method
>
>
> Documentation/trace/kprobetrace.rst | 3 +
> Documentation/trace/uprobetracer.rst | 4 +
> kernel/trace/Kconfig | 4 +
> kernel/trace/Makefile | 1
> kernel/trace/trace.c | 4 +
> kernel/trace/trace_dynevent.c | 183
> +++++++++++++++++++++++++++++++++
> kernel/trace/trace_dynevent.h | 89 ++++++++++++++++
> kernel/trace/trace_kprobe.c | 191 +++++++++++++++++++++++-
> ----------
> kernel/trace/trace_uprobe.c | 175 +++++++++++++++++++++++-
> -------
> 9 files changed, 547 insertions(+), 107 deletions(-)
> create mode 100644 kernel/trace/trace_dynevent.c
> create mode 100644 kernel/trace/trace_dynevent.h
>
> --
> Masami Hiramatsu (Linaro) <mhiramat@xxxxxxxxxx>