From 06668850e383da596a1ae0e755ad2f031b6fdbdb Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 21 Feb 2018 23:05:15 -0500 Subject: [PATCH] include/qemu/osdep.h: Don't include qapi/error.h Commit 57cb38b included qapi/error.h into qemu/osdep.h to get the Error typedef. Since then, we've moved to include qemu/osdep.h everywhere. Its file comment explains: "To avoid getting into possible circular include dependencies, this file should not include any other QEMU headers, with the exceptions of config-host.h, compiler.h, os-posix.h and os-win32.h, all of which are doing a similar job to this file and are under similar constraints." qapi/error.h doesn't do a similar job, and it doesn't adhere to similar constraints: it includes qapi-types.h. That's in excess of 100KiB of crap most .c files don't actually need. Add the typedef to qemu/typedefs.h, and include that instead of qapi/error.h. Include qapi/error.h in .c files that need it and don't get it now. Include qapi-types.h in qom/object.h for uint16List. Update scripts/clean-includes accordingly. Update it further to match reality: replace config.h by config-target.h, add sysemu/os-posix.h, sysemu/os-win32.h. Update the list of includes in the qemu/osdep.h comment quoted above similarly. This reduces the number of objects depending on qapi/error.h from "all of them" to less than a third. Unfortunately, the number depending on qapi-types.h shrinks only a little. More work is needed for that one. Backports commit da34e65cb4025728566d6504a99916f6e7e1dd6a from qemu --- qemu/exec.c | 1 + qemu/hw/arm/tosa.c | 1 + qemu/hw/arm/virt.c | 1 + qemu/hw/core/machine.c | 2 ++ qemu/hw/intc/apic_common.c | 1 + qemu/hw/mips/mips_r4k.c | 2 ++ qemu/hw/sparc/leon3.c | 2 ++ qemu/hw/sparc64/sun4u.c | 2 ++ qemu/include/qapi/error.h | 5 ----- qemu/include/qemu/osdep.h | 8 ++++++-- qemu/include/qemu/typedefs.h | 1 + qemu/include/qom/object.h | 1 + qemu/memory.c | 1 + qemu/memory_mapping.c | 1 + qemu/qapi/qapi-dealloc-visitor.c | 1 + qemu/qapi/qapi-visit-core.c | 1 + qemu/qapi/qmp-input-visitor.c | 1 + qemu/qapi/qmp-output-visitor.c | 1 + qemu/qapi/string-input-visitor.c | 1 + qemu/qom/cpu.c | 1 + qemu/qom/object.c | 1 + qemu/qom/qom-qobject.c | 1 + qemu/scripts/qapi-visit.py | 1 + qemu/target-arm/cpu.c | 1 + qemu/target-arm/cpu64.c | 1 + qemu/target-i386/cpu.c | 1 + qemu/target-m68k/cpu.c | 1 + qemu/target-mips/cpu.c | 1 + qemu/target-sparc/cpu.c | 1 + qemu/util/error.c | 1 + qemu/util/oslib-posix.c | 1 + qemu/util/oslib-win32.c | 1 + 32 files changed, 40 insertions(+), 7 deletions(-) diff --git a/qemu/exec.c b/qemu/exec.c index 679e40fe..1d419a2b 100644 --- a/qemu/exec.c +++ b/qemu/exec.c @@ -19,6 +19,7 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "qapi/error.h" #ifndef _WIN32 #include #endif diff --git a/qemu/hw/arm/tosa.c b/qemu/hw/arm/tosa.c index 4aa18c02..212456a4 100644 --- a/qemu/hw/arm/tosa.c +++ b/qemu/hw/arm/tosa.c @@ -12,6 +12,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/hw.h" #include "hw/arm/arm.h" #include "hw/boards.h" diff --git a/qemu/hw/arm/virt.c b/qemu/hw/arm/virt.c index f34d3fdd..81c068d9 100644 --- a/qemu/hw/arm/virt.c +++ b/qemu/hw/arm/virt.c @@ -32,6 +32,7 @@ /* By Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "hw/arm/arm.h" #include "hw/boards.h" diff --git a/qemu/hw/core/machine.c b/qemu/hw/core/machine.c index fa36062b..322fe117 100644 --- a/qemu/hw/core/machine.c +++ b/qemu/hw/core/machine.c @@ -10,7 +10,9 @@ * See the COPYING file in the top-level directory. */ +#include "qemu/osdep.h" #include "hw/boards.h" +#include "qapi/error.h" static void machine_initfn(struct uc_struct *uc, Object *obj, void *opaque) { diff --git a/qemu/hw/intc/apic_common.c b/qemu/hw/intc/apic_common.c index 80e7ae55..9d75a67a 100644 --- a/qemu/hw/intc/apic_common.c +++ b/qemu/hw/intc/apic_common.c @@ -18,6 +18,7 @@ * License along with this library; if not, see */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/i386/apic.h" #include "hw/i386/apic_internal.h" #include "hw/qdev.h" diff --git a/qemu/hw/mips/mips_r4k.c b/qemu/hw/mips/mips_r4k.c index aa1ee11f..30ecb66d 100644 --- a/qemu/hw/mips/mips_r4k.c +++ b/qemu/hw/mips/mips_r4k.c @@ -11,6 +11,8 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh, 2015 */ +#include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/hw.h" #include "hw/mips/mips.h" #include "hw/mips/cpudevs.h" diff --git a/qemu/hw/sparc/leon3.c b/qemu/hw/sparc/leon3.c index 150aaed1..24e0337c 100644 --- a/qemu/hw/sparc/leon3.c +++ b/qemu/hw/sparc/leon3.c @@ -25,6 +25,8 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh, 2015 */ +#include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/hw.h" #include "hw/sparc/sparc.h" #include "qemu/timer.h" diff --git a/qemu/hw/sparc64/sun4u.c b/qemu/hw/sparc64/sun4u.c index 1995d311..22a65b1c 100644 --- a/qemu/hw/sparc64/sun4u.c +++ b/qemu/hw/sparc64/sun4u.c @@ -21,6 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/hw.h" #include "hw/sparc/sparc.h" #include "qemu/timer.h" diff --git a/qemu/include/qapi/error.h b/qemu/include/qapi/error.h index 53578443..b3061ebd 100644 --- a/qemu/include/qapi/error.h +++ b/qemu/include/qapi/error.h @@ -112,11 +112,6 @@ #include "qapi-types.h" #include "unicorn/platform.h" -/** - * Opaque error object. - */ -typedef struct Error Error; - /* * Overall category of an error. * Based on the qapi type QapiErrorClass, but reproduced here for nicer diff --git a/qemu/include/qemu/osdep.h b/qemu/include/qemu/osdep.h index 52962c6d..65c24b3a 100644 --- a/qemu/include/qemu/osdep.h +++ b/qemu/include/qemu/osdep.h @@ -7,8 +7,10 @@ * * To avoid getting into possible circular include dependencies, this * file should not include any other QEMU headers, with the exceptions - * of config-host.h, compiler.h, os-posix.h and os-win32.h, all of which - * are doing a similar job to this file and are under similar constraints. + * of config-host.h, config-target.h, qemu/compiler.h, + * sysemu/os-posix.h, sysemu/os-win32.h, glib-compat.h and + * qemu/typedefs.h, all of which are doing a similar job to this file + * and are under similar constraints. * * This header also contains prototypes for functions defined in * os-*.c and util/oslib-*.c; those would probably be better split @@ -86,6 +88,8 @@ #include "glib_compat.h" +#include "qemu/typedefs.h" + #ifndef O_LARGEFILE #define O_LARGEFILE 0 #endif diff --git a/qemu/include/qemu/typedefs.h b/qemu/include/qemu/typedefs.h index 0fd2e45d..f9cb6c13 100644 --- a/qemu/include/qemu/typedefs.h +++ b/qemu/include/qemu/typedefs.h @@ -22,6 +22,7 @@ typedef struct DisplayChangeListener DisplayChangeListener; typedef struct DisplayState DisplayState; typedef struct DisplaySurface DisplaySurface; typedef struct DriveInfo DriveInfo; +typedef struct Error Error; typedef struct EventNotifier EventNotifier; typedef struct FWCfgState FWCfgState; typedef struct HCIInfo HCIInfo; diff --git a/qemu/include/qom/object.h b/qemu/include/qom/object.h index 5d837eb7..540f6f06 100644 --- a/qemu/include/qom/object.h +++ b/qemu/include/qom/object.h @@ -16,6 +16,7 @@ #include "glib_compat.h" #include "unicorn/platform.h" +#include "qapi-types.h" #include "qemu/queue.h" #include "qemu/typedefs.h" #include "qapi/error.h" diff --git a/qemu/memory.c b/qemu/memory.c index ee9bb17a..754ffc59 100644 --- a/qemu/memory.c +++ b/qemu/memory.c @@ -16,6 +16,7 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "exec/memory.h" #include "exec/address-spaces.h" diff --git a/qemu/memory_mapping.c b/qemu/memory_mapping.c index e9bdd6e5..665226cf 100644 --- a/qemu/memory_mapping.c +++ b/qemu/memory_mapping.c @@ -14,6 +14,7 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "glib_compat.h" #include "qemu-common.h" diff --git a/qemu/qapi/qapi-dealloc-visitor.c b/qemu/qapi/qapi-dealloc-visitor.c index 7f15395f..0152f0fa 100644 --- a/qemu/qapi/qapi-dealloc-visitor.c +++ b/qemu/qapi/qapi-dealloc-visitor.c @@ -12,6 +12,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qapi/dealloc-visitor.h" #include "qemu/queue.h" #include "qemu-common.h" diff --git a/qemu/qapi/qapi-visit-core.c b/qemu/qapi/qapi-visit-core.c index 47bfb11e..f8680b42 100644 --- a/qemu/qapi/qapi-visit-core.c +++ b/qemu/qapi/qapi-visit-core.c @@ -14,6 +14,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "qapi/qmp/qobject.h" #include "qapi/qmp/qerror.h" diff --git a/qemu/qapi/qmp-input-visitor.c b/qemu/qapi/qmp-input-visitor.c index d0264f80..0c6fbbee 100644 --- a/qemu/qapi/qmp-input-visitor.c +++ b/qemu/qapi/qmp-input-visitor.c @@ -12,6 +12,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qapi/qmp-input-visitor.h" #include "qapi/visitor-impl.h" #include "qemu/queue.h" diff --git a/qemu/qapi/qmp-output-visitor.c b/qemu/qapi/qmp-output-visitor.c index 8519dbb2..c0c7c551 100644 --- a/qemu/qapi/qmp-output-visitor.c +++ b/qemu/qapi/qmp-output-visitor.c @@ -12,6 +12,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qapi/qmp-output-visitor.h" #include "qapi/visitor-impl.h" #include "qemu/queue.h" diff --git a/qemu/qapi/string-input-visitor.c b/qemu/qapi/string-input-visitor.c index 91687a09..7d5fe5c9 100644 --- a/qemu/qapi/string-input-visitor.c +++ b/qemu/qapi/string-input-visitor.c @@ -11,6 +11,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "qapi/string-input-visitor.h" #include "qapi/visitor-impl.h" diff --git a/qemu/qom/cpu.c b/qemu/qom/cpu.c index a58d4f3c..2144b5bf 100644 --- a/qemu/qom/cpu.c +++ b/qemu/qom/cpu.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "qemu/log.h" #include "uc_priv.h" diff --git a/qemu/qom/object.c b/qemu/qom/object.c index ccb3f964..927db34c 100644 --- a/qemu/qom/object.c +++ b/qemu/qom/object.c @@ -11,6 +11,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qom/object.h" #include "qemu-common.h" #include "qapi/visitor.h" diff --git a/qemu/qom/qom-qobject.c b/qemu/qom/qom-qobject.c index b8327d51..b69977c2 100644 --- a/qemu/qom/qom-qobject.c +++ b/qemu/qom/qom-qobject.c @@ -10,6 +10,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "qom/object.h" #include "qom/qom-qobject.h" diff --git a/qemu/scripts/qapi-visit.py b/qemu/scripts/qapi-visit.py index c6ce3ab4..cf8680ff 100644 --- a/qemu/scripts/qapi-visit.py +++ b/qemu/scripts/qapi-visit.py @@ -360,6 +360,7 @@ h_comment = ''' fdef.write(mcgen(''' #include "qemu-common.h" +#include "qapi/error.h" #include "%(prefix)sqapi-visit.h" ''', prefix=prefix)) diff --git a/qemu/target-arm/cpu.c b/qemu/target-arm/cpu.c index 6191cf49..8eb58375 100644 --- a/qemu/target-arm/cpu.c +++ b/qemu/target-arm/cpu.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "cpu.h" #include "internals.h" #include "qemu-common.h" diff --git a/qemu/target-arm/cpu64.c b/qemu/target-arm/cpu64.c index 94cb7409..e2cddb1a 100644 --- a/qemu/target-arm/cpu64.c +++ b/qemu/target-arm/cpu64.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "cpu.h" #include "qemu-common.h" #include "hw/arm/arm.h" diff --git a/qemu/target-i386/cpu.c b/qemu/target-i386/cpu.c index 77b688e3..e1aaac82 100644 --- a/qemu/target-i386/cpu.c +++ b/qemu/target-i386/cpu.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "unicorn/platform.h" #include "cpu.h" diff --git a/qemu/target-m68k/cpu.c b/qemu/target-m68k/cpu.c index 0134749a..fd1da757 100644 --- a/qemu/target-m68k/cpu.c +++ b/qemu/target-m68k/cpu.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/m68k/m68k.h" #include "cpu.h" #include "qemu-common.h" diff --git a/qemu/target-mips/cpu.c b/qemu/target-mips/cpu.c index 47ab0f65..c456846c 100644 --- a/qemu/target-mips/cpu.c +++ b/qemu/target-mips/cpu.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "cpu.h" #include "qemu-common.h" #include "hw/mips/mips.h" diff --git a/qemu/target-sparc/cpu.c b/qemu/target-sparc/cpu.c index 7f2fe173..b8c889bb 100644 --- a/qemu/target-sparc/cpu.c +++ b/qemu/target-sparc/cpu.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "cpu.h" #include "hw/sparc/sparc.h" diff --git a/qemu/util/error.c b/qemu/util/error.c index 061ff003..f08309a6 100644 --- a/qemu/util/error.c +++ b/qemu/util/error.c @@ -13,6 +13,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "qemu-common.h" #include "qapi/error.h" diff --git a/qemu/util/oslib-posix.c b/qemu/util/oslib-posix.c index 05dc0a36..15efc52f 100644 --- a/qemu/util/oslib-posix.c +++ b/qemu/util/oslib-posix.c @@ -40,6 +40,7 @@ #define HUGETLBFS_MAGIC 0x958458f6 #include "qemu/osdep.h" +#include "qapi/error.h" #include "unicorn/platform.h" #include "sysemu/sysemu.h" #include diff --git a/qemu/util/oslib-win32.c b/qemu/util/oslib-win32.c index 9681a573..67377752 100644 --- a/qemu/util/oslib-win32.c +++ b/qemu/util/oslib-win32.c @@ -27,6 +27,7 @@ * */ #include "qemu/osdep.h" +#include "qapi/error.h" #include #include