Re: [PATCH 2/8] tracing: create automated trace defines

Mathieu Desnoyers
2009-04-16T23:44:24Z

* Jeremy Fitzhardinge (jeremy@goop.org) wrote:
> Mathieu Desnoyers wrote:
>> Is your only problem the fact that tracepoints include rcupdate.h ?
>
> No. That was the first roadblock, which caused massive cyclic
> dependencies between includes and consequent failure to define
> everything required. I solved that by pushing __DO_TRACE out of line.
> Everything since then is a separate issue.
>
>> This
>> can easily be solved by moving rcu_read_(un)lock_sched_notrace to a
>> rcu-update-<insert meaningful name here> and include this header in
>> rcupdate.h and tracepoint.h.
>>
> I suppose, but I think pushing __do_trace_##name out of line is cleaner
> anyway. And I think it's very important that tracepoint.h have a
> *absolutely minimal* #include set, so that it can be safely included in
> as many contexts as possible. asm/paravirt.h is complex enough as it
> is, and I really don't want tracepoint bringing in any extra headers at
> all. linux/types.h is about the only acceptable one.
>
>> If by doing these modifications we succeed in keeping the "void"
>> parameters working _and_ make your stuff to compile, I think we would
>> have done something great. :-)
>>
>
> The void issue is irritating, but relatively minor compared to the rest.
> If everything else gets solved except for the need to pass a dummy param
> to no-arg tracepoints, then I think it'll be a generally useful facility.
>

The other point I dislike about the out-of-line approach is that the
tracer will suffer from a pointless supplementary function call at each
event. Given how slow function calls are, at least on x86, I'd prefer
leaving the handler call chain inline, unless there is a very strong
reason not to do so.

I'll come up with a patch that leaves the tracepoint inline, but fixes
the header dependency.

Mathieu

> J
>

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68