From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>
Subject: [Qemu-devel] [PULL 07/29] trace: Do not include qom/cpu.h into generated trace.h
Date: Tue, 13 Aug 2019 17:46:31 +0200 [thread overview]
Message-ID: <20190813154653.20568-8-armbru@redhat.com> (raw)
In-Reply-To: <20190813154653.20568-1-armbru@redhat.com>
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 4815185902 "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 <stefanha@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-8-armbru@redhat.com>
---
trace/control-internal.h | 25 --------------
trace/control-vcpu.h | 63 +++++++++++++++++++++++++++++++++++
trace/control.h | 24 -------------
block/block-backend.c | 1 +
qom/object.c | 1 +
trace/qmp.c | 2 +-
ui/vnc.c | 1 +
scripts/tracetool/format/c.py | 1 +
scripts/tracetool/format/h.py | 7 +++-
9 files changed, 74 insertions(+), 51 deletions(-)
create mode 100644 trace/control-vcpu.h
diff --git a/trace/control-internal.h b/trace/control-internal.h
index c7fbe2d3bf..8b2b50a7cf 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -10,9 +10,6 @@
#ifndef TRACE__CONTROL_INTERNAL_H
#define TRACE__CONTROL_INTERNAL_H
-#include "qom/cpu.h"
-
-
extern int trace_events_enabled_count;
@@ -59,28 +56,6 @@ static inline bool trace_event_get_state_dynamic(TraceEvent *ev)
return unlikely(trace_events_enabled_count) && *ev->dstate;
}
-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);
-}
-
-
void trace_event_register_group(TraceEvent **events);
#endif /* TRACE__CONTROL_INTERNAL_H */
diff --git a/trace/control-vcpu.h b/trace/control-vcpu.h
new file mode 100644
index 0000000000..a8f1035c2e
--- /dev/null
+++ b/trace/control-vcpu.h
@@ -0,0 +1,63 @@
+/*
+ * Interface for configuring and controlling the state of tracing events.
+ *
+ * Copyright (C) 2011-2016 Lluís Vilanova <vilanova@ac.upc.edu>
+ *
+ * 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
diff --git a/trace/control.h b/trace/control.h
index 570492d6e8..1f81c491b6 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -119,22 +119,6 @@ static const char * trace_event_get_name(TraceEvent *ev);
#define trace_event_get_state_backends(id) \
((id ##_ENABLED) && id ##_BACKEND_DSTATE())
-/**
- * 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_state_static:
* @id: Event identifier.
@@ -155,14 +139,6 @@ static bool trace_event_get_state_static(TraceEvent *ev);
*/
static bool trace_event_get_state_dynamic(TraceEvent *ev);
-/**
- * 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);
-
-
/**
* trace_event_set_state_dynamic:
*
diff --git a/block/block-backend.c b/block/block-backend.c
index 0056b526b8..6aed80bf0b 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -15,6 +15,7 @@
#include "block/block_int.h"
#include "block/blockjob.h"
#include "block/throttle-groups.h"
+#include "hw/qdev-core.h"
#include "sysemu/blockdev.h"
#include "sysemu/sysemu.h"
#include "qapi/error.h"
diff --git a/qom/object.c b/qom/object.c
index 1555547727..6fa9c619fa 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -11,6 +11,7 @@
*/
#include "qemu/osdep.h"
+#include "hw/qdev-core.h"
#include "qapi/error.h"
#include "qom/object.h"
#include "qom/object_interfaces.h"
diff --git a/trace/qmp.c b/trace/qmp.c
index ea99b00956..38246e1aa6 100644
--- a/trace/qmp.c
+++ b/trace/qmp.c
@@ -10,7 +10,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qapi/qapi-commands-trace.h"
-#include "control.h"
+#include "control-vcpu.h"
static CPUState *get_cpu(bool has_vcpu, int vcpu, Error **errp)
diff --git a/ui/vnc.c b/ui/vnc.c
index 38f92bfca3..f47f726681 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -28,6 +28,7 @@
#include "vnc.h"
#include "vnc-jobs.h"
#include "trace.h"
+#include "hw/qdev-core.h"
#include "sysemu/sysemu.h"
#include "qemu/error-report.h"
#include "qemu/module.h"
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 833c05a022..31207961b0 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -28,6 +28,7 @@ def generate(events, backend, group):
out('/* This file is autogenerated by tracetool, do not edit. */',
'',
'#include "qemu/osdep.h"',
+ '#include "qemu/module.h"',
'#include "%s"' % header,
'')
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 338a2365ee..5596b304e6 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -17,12 +17,17 @@ from tracetool import out
def generate(events, backend, group):
+ if group == "root":
+ header = "trace/control-vcpu.h"
+ else:
+ header = "trace/control.h"
+
out('/* This file is autogenerated by tracetool, do not edit. */',
'',
'#ifndef TRACE_%s_GENERATED_TRACERS_H' % group.upper(),
'#define TRACE_%s_GENERATED_TRACERS_H' % group.upper(),
'',
- '#include "trace/control.h"',
+ '#include "%s"' % header,
'')
for e in events:
--
2.21.0
next prev parent reply other threads:[~2019-08-13 15:50 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 01/29] include: Make headers more self-contained Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 02/29] Include generated QAPI headers less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 03/29] qapi: Split error.json off common.json Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 04/29] memory: Fix type of IOMMUMemoryRegionClass member @parent_class Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 05/29] queue: Drop superfluous #include qemu/atomic.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 06/29] trace: Eliminate use of TARGET_FMT_plx Markus Armbruster
2019-08-13 15:46 ` Markus Armbruster [this message]
2019-08-13 15:46 ` [Qemu-devel] [PULL 08/29] Include sysemu/reset.h a lot less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 09/29] Include migration/qemu-file-types.h " Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 10/29] ide: Include hw/ide/internal a bit less outside hw/ide/ Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 11/29] typedefs: Separate incomplete types and function types Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 12/29] Include hw/irq.h a lot less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 13/29] Clean up inclusion of exec/cpu-common.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 14/29] migration: Move the VMStateDescription typedef to typedefs.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 15/29] Include migration/vmstate.h less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 16/29] Include exec/memory.h slightly less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 17/29] Include qom/object.h " Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 18/29] Include hw/hw.h exactly where needed Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 19/29] Include qemu/queue.h slightly less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 20/29] Include qemu/main-loop.h less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 21/29] Include hw/qdev-properties.h less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 22/29] Include hw/boards.h a bit less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 23/29] numa: Don't include hw/boards.h into sysemu/numa.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 24/29] Include sysemu/hostmem.h less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 25/29] numa: Move remaining NUMA declarations from sysemu.h to numa.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 26/29] Clean up inclusion of sysemu/sysemu.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 27/29] Include sysemu/sysemu.h a lot less Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 28/29] sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h Markus Armbruster
2019-08-13 15:46 ` [Qemu-devel] [PULL 29/29] sysemu: Split sysemu/runstate.h off sysemu/sysemu.h Markus Armbruster
2019-08-16 10:59 ` [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Peter Maydell
2019-08-16 11:23 ` Philippe Mathieu-Daudé
2019-08-16 12:39 ` Philippe Mathieu-Daudé
2019-08-16 13:24 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190813154653.20568-8-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.