Messages in this thread | | | Date | Tue, 24 Feb 2009 19:59:04 -0500 | From | Mathieu Desnoyers <> | Subject | Re: [PATCH 0/4][RFC] event tracer |
| |
* Steven Rostedt (rostedt@goodmis.org) wrote: > > This is still RFC, do not pull. > > This patch set gives the ability to add a format string and args to > a trace point declaration. Then it gives a tracer an opportunity to > override the header macro and use the default trace format to trace > the object. > > For example (and used in this patch series), the sched tracepoint > declarations are moved from include/trace/sched.h to > include/trace/sched_event_types.h, and instead of using the macro > DECLARE_TRACE we use DECLARE_TRACE_FMT. The first three arguments > are the same, but it adds 2 more arguments. A printf format and > arguments. > > The new trace/sched.h file contains: > > #include <linux/sched.h> > #include <linux/tracepoint.h> > > #include <trace/sched_event_types.h> > > The sched_event_types.h file has: > > DECLARE_TRACE_FMT(sched_kthread_stop, > TPPROTO(struct task_struct *t), > TPARGS(t), > "task %s:%d", TPARGS(t->comm, t->pid)); > > The tracepoint.h defines DECLARE_TRACE_FMT as: > > #define DECLARE_TRACE_FMT(name, proto, args, fmt, fmt_args) \ > DECLARE_TRACE(name, TPPROTO(proto), TPARGS(args)) > > > But in kernel/trace/events.c we have: > > /* trace/<type>.h here */ > #include <trace/sched.h> > > #include "trace_events.h" > > /* trace/<type>_event_types.h here */ > #include <trace/sched_event_types.h> > > The trace_events.h redefines the DECLARE_TRACE_FMT and makes a hook > for to automate adding event points. > > To add event points, convert to the DECLARE_TRACE_FMT, add your default > printf format, and then add to events.c, the <type>.h and <type>_event_types.h > as described. Then your trace points will appear in the event tracer. > > Next I'll convert the rest of the tracepoints that are already defined > to this format. >
Hi Steve,
The approach sounds great : an hybrid between markers and tracepoints. I'll dig into it. That would be useful for LTTng.
Mathieu
> > The following patches are in: > > git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git > > branch: rfc/event_tracer > > > Steven Rostedt (4): > tracing: add event trace infrastructure > tracing: add DECLARE_TRACE_FMT to tracepoint.h > tracing: add schedule events to event trace > tracing: make event directory structure > > ---- > include/asm-generic/vmlinux.lds.h | 11 +- > include/linux/tracepoint.h | 3 + > include/trace/sched.h | 49 +----- > include/trace/sched_event_types.h | 74 +++++++ > kernel/trace/Kconfig | 9 + > kernel/trace/Makefile | 2 + > kernel/trace/events.c | 13 ++ > kernel/trace/trace_events.c | 407 +++++++++++++++++++++++++++++++++++++ > kernel/trace/trace_events.h | 52 +++++ > 9 files changed, 571 insertions(+), 49 deletions(-) > -- >
-- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
| |