Messages in this thread | | | Subject | Re: [PATCH 04/10][RFC] tracing: Remove per event trace registering | From | Steven Rostedt <> | Date | Wed, 28 Apr 2010 20:00:18 -0400 |
| |
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
| |