Messages in this thread | | | Date | Tue, 19 May 2009 18:36:56 -0400 (EDT) | From | Steven Rostedt <> | Subject | Re: [PATCH 0/3] tracepoints: delay argument evaluation |
| |
[ added Christoph ]
On Tue, 19 May 2009, Mathieu Desnoyers wrote:
> * Jason Baron (jbaron@redhat.com) wrote: > > hi, > > > > After disassembling some of the tracepoints, I've noticed that arguments that > > are passed as macros or that perform dereferences, evaluate prior to the > > tracepoint on/off check. This means that we are needlessly impacting the > > off case. > > > > I am proposing to fix this by adding a macro that first checks for on/off and > > then calls 'trace_##name', preserving type checking. Thus, callsites have to > > move from: > > > > trace_block_bio_complete(md->queue, bio); > > > > to: > > > > tracepoint_call(block_bio_complete, md->queue, bio); > > > > I knew this limitation in the first place, but decided it was not worth > uglifying the tracepoint call site for it. > > The expected use is to pass a pointer or a value as tracepoint argument > and dereference it in the callback attached to it. > > Is there any _real_ added value for going through this API change pain ? >
I agree with Mathieu that I don't think we want to "uglify" the callers. But I also agree with Jason that we must not add any overhead to the "off" state when we can avoid it.
If it comes down to the two, I would lean towards the "uglify" if it shows performance benefits in the "off" case.
Perhaps I'll try to see if I can fool CPP to getting both worlds. But this will be tricky :-/
When are we going to get our own C pre-processor?
-- Steve
| |