On Thu, Sep 08, 2016 at 03:23:26PM +0200, Lluís Vilanova wrote: > Daniel P Berrange writes: > > > I previously split the global trace-events file up into one file > > per-subdirectory to avoid merge conflict hell. > [...] > > Sorry, I could not find the message where the infrastructure is modified to > provide this. But I think there's a more efficient way to provide modular > auto-generated tracing code without the hierarchical indexing you proposed.
[snip] > struct TraceEvent ___trace_events[] = { > { > .name = "eventname", > .sstate = 1, > .dstate = ___trace_eventname_dstate; > } > } > > TraceEvent *TRACE_EVENTNAME = &___trace_events[...]; Life would be simpler if we had the 'bool dstate' as part of the TraceEvent struct, but doing so would essentially be reverting this previous change: commit 585ec7273e6fdab902b2128bc6c2a8136aafef04 Author: Paolo Bonzini <pbonz...@redhat.com> Date: Wed Oct 28 07:06:27 2015 +0100 trace: track enabled events in a separate array This is more cache friendly on the fast path, where we already have the event id available. I asked Paolo about this previously and he indicated it was a notable performance improvement, so we can't put dstate back into the TraceEvent struct :-( Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|