-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
trace: Do not include qom/cpu.h into generated trace.h
docs/devel/tracing.txt explains "since many source files include trace.h, [the generated trace.h use] a minimum of types and other header files included to keep the namespace clean and compile times and dependencies down." Commit 4815185 "trace: Add per-vCPU tracing states for events with the 'vcpu' property" made them all include qom/cpu.h via control-internal.h. qom/cpu.h in turn includes about thirty headers. Ouch. Per-vCPU tracing is currently not supported in sub-directories' trace-events. In other words, qom/cpu.h can only be used in trace-root.h, not in any trace.h. Split trace/control-vcpu.h off trace/control.h and trace/control-internal.h. Have the generated trace.h include trace/control.h (which no longer includes qom/cpu.h), and trace-root.h include trace/control-vcpu.h (which includes it). The resulting improvement is a bit disappointing: in my "build everything" tree, some 1100 out of 6600 objects (not counting tests and objects that don't depend on qemu/osdep.h) depend on a trace.h, and about 600 of them no longer depend on qom/cpu.h. But more than 1300 others depend on trace-root.h. More work is clearly needed. Left for another day. Cc: Stefan Hajnoczi <[email protected]> Signed-off-by: Markus Armbruster <[email protected]> Reviewed-by: Stefan Hajnoczi <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Tested-by: Philippe Mathieu-Daudé <[email protected]> Message-Id: <[email protected]>
- Loading branch information
Markus Armbruster
committed
Aug 16, 2019
1 parent
988fa10
commit 13d4ff0
Showing
9 changed files
with
74 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* Interface for configuring and controlling the state of tracing events. | ||
* | ||
* Copyright (C) 2011-2016 Lluís Vilanova <[email protected]> | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
*/ | ||
|
||
#ifndef TRACE__CONTROL_VCPU_H | ||
#define TRACE__CONTROL_VCPU_H | ||
|
||
#include "control.h" | ||
#include "event-internal.h" | ||
#include "qom/cpu.h" | ||
|
||
/** | ||
* trace_event_get_vcpu_state: | ||
* @vcpu: Target vCPU. | ||
* @id: Event identifier name. | ||
* | ||
* Get the tracing state of an event (both static and dynamic) for the given | ||
* vCPU. | ||
* | ||
* If the event has the disabled property, the check will have no performance | ||
* impact. | ||
*/ | ||
#define trace_event_get_vcpu_state(vcpu, id) \ | ||
((id ##_ENABLED) && \ | ||
trace_event_get_vcpu_state_dynamic_by_vcpu_id( \ | ||
vcpu, _ ## id ## _EVENT.vcpu_id)) | ||
|
||
/** | ||
* trace_event_get_vcpu_state_dynamic: | ||
* | ||
* Get the dynamic tracing state of an event for the given vCPU. | ||
*/ | ||
static bool trace_event_get_vcpu_state_dynamic(CPUState *vcpu, TraceEvent *ev); | ||
|
||
#include "control-internal.h" | ||
|
||
static inline bool | ||
trace_event_get_vcpu_state_dynamic_by_vcpu_id(CPUState *vcpu, | ||
uint32_t vcpu_id) | ||
{ | ||
/* it's on fast path, avoid consistency checks (asserts) */ | ||
if (unlikely(trace_events_enabled_count)) { | ||
return test_bit(vcpu_id, vcpu->trace_dstate); | ||
} else { | ||
return false; | ||
} | ||
} | ||
|
||
static inline bool trace_event_get_vcpu_state_dynamic(CPUState *vcpu, | ||
TraceEvent *ev) | ||
{ | ||
uint32_t vcpu_id; | ||
assert(trace_event_is_vcpu(ev)); | ||
vcpu_id = trace_event_get_vcpu_id(ev); | ||
return trace_event_get_vcpu_state_dynamic_by_vcpu_id(vcpu, vcpu_id); | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters