lkml.org 
[lkml]   [2010]   [Apr]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 04/10][RFC] tracing: Remove per event trace registering
From
Date
On Wed, 2010-04-28 at 16:44 -0400, Mathieu Desnoyers wrote:
> * Steven Rostedt (rostedt@goodmis.org) wrote:
> > From: Steven Rostedt <srostedt@redhat.com>
> >
> > This patch removes the register functions of TRACE_EVENT() to enable
> > and disable tracepoints. The registering of a event is now down
> > directly in the trace_events.c file. The tracepoint_probe_register()
> > is now called directly.
> >
> > The prototypes are no longer type checked, but this should not be
> > an issue since the tracepoints are created automatically by the
> > macros. If a prototype is incorrect in the TRACE_EVENT() macro, then
> > other macros will catch it.
> >
> > The trace_event_class structure now holds the probes to be called
> > by the callbacks. This removes needing to have each event have
> > a separate pointer for the probe.
> >
> > To handle kprobes and syscalls, since they register probes in a
> > different manner, a "reg" field is added to the ftrace_event_class
> > structure. If the "reg" field is assigned, then it will be called for
> > enabling and disabling of the probe for either ftrace or perf. To let
> > the reg function know what is happening, a new enum (trace_reg) is
> > created that has the type of control that is needed.
> >
> > With this new rework, the 82 kernel events and 616 syscall events
> > has their footprint dramatically lowered:
> >
> > text data bss dec hex filename
> > 5788186 1337252 9351592 16477030 fb6b66 vmlinux.orig
> > 5792282 1333796 9351592 16477670 fb6de6 vmlinux.class
> > 5793448 1333780 9351592 16478820 fb7264 vmlinux.tracepoint
> > 5796926 1337748 9351592 16486266 fb8f7a vmlinux.data
> > 5774316 1306580 9351592 16432488 fabd68 vmlinux.regs
> >
> > The size went from 16477030 to 16432488, that's a total of 44K
> > in savings. With tracepoints being continuously added, this is
> > critical that the footprint becomes minimal.
>
> Have you tried doing a BUILD_BUG_ON() on __typeof__() mismatch between
> the type of the callback generated by TRACE_EVENT() and the expected
> type ? This might help catching tricky preprocessor macro errors early.

Well, we could, but if it is broken once, it is broken everywhere.

-- Steve




\
 
 \ /
  Last update: 2010-04-29 02:03    [from the cache]
©2003-2011 Jasper Spaans