From patchwork Tue Jan 30 10:21:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 867453 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zW2fj4yvnz9sBd for ; Tue, 30 Jan 2018 21:29:01 +1100 (AEDT) Received: from localhost ([::1]:55179 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1egT9v-0000rQ-OX for incoming@patchwork.ozlabs.org; Tue, 30 Jan 2018 05:28:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1egT3O-00048V-Le for qemu-devel@nongnu.org; Tue, 30 Jan 2018 05:22:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1egT3L-0000cD-Aj for qemu-devel@nongnu.org; Tue, 30 Jan 2018 05:22:14 -0500 Received: from mx1.redhat.com ([209.132.183.28]:37322) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1egT3K-0000YR-Uc for qemu-devel@nongnu.org; Tue, 30 Jan 2018 05:22:11 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BE45A6E777 for ; Tue, 30 Jan 2018 10:22:04 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-148.ams2.redhat.com [10.36.116.148]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2E15970902 for ; Tue, 30 Jan 2018 10:22:04 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 93B6B1138645; Tue, 30 Jan 2018 11:22:02 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 30 Jan 2018 11:21:44 +0100 Message-Id: <20180130102202.28519-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 30 Jan 2018 10:22:04 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 00/18] Clean up includes to reduce compile time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We have awfully many "touch it, recompile the world" headers. Right now, I count about fifty that are prerequisites of more than half the objects in my "build everything" tree. Some of them are that way by necessity. Many of them are not. This series takes care of six I happen to touch, because serve as their maintainer: include/qapi/qmp/qdict.h include/qapi/qmp/qlist.h include/qapi/qmp/qnull.h include/qapi/qmp/qnum.h include/qapi/qmp/qobject.h include/qemu/option.h Before this series, touching any of these recompiles more than 95% of my objects. That's more than 4500 compiler runs. After this series, only 0.3% - 8% of my objects get recompiled. Markus Armbruster (18): Clean up includes Drop superfluous includes of qapi-types.h Include qapi/error.h exactly where needed Drop superfluous includes of qapi/qmp/qerror.h Include qmp-commands.h exactly where needed Typedef the subtypes of QObject in qemu/typedefs.h, too Eliminate qapi/qmp/types.h qdict qlist: Make most helper macros functions Include qapi/qmp/qobject.h exactly where needed Include qapi/qmp/qlist.h exactly where needed Include qapi/qmp/qdict.h exactly where needed Include qapi/qmp/qstring.h exactly where needed Include qapi/qmp/qbool.h exactly where needed Include qapi/qmp/qnum.h exactly where needed Include qapi/qmp/qnull.h exactly where needed Drop superfluous includes of qapi/qmp/dispatch.h Drop superfluous includes of qapi/qmp/qjson.h Move include qemu/option.h from qemu-common.h to actual users accel/accel.c | 2 +- arch_init.c | 1 + audio/wavcapture.c | 1 + backends/cryptodev.c | 1 - backends/hostmem.c | 1 - backends/tpm.c | 1 - balloon.c | 2 +- block.c | 6 ++++-- block/blkdebug.c | 2 +- block/blkverify.c | 1 + block/block-backend.c | 2 ++ block/crypto.c | 2 ++ block/curl.c | 5 +++-- block/file-posix.c | 2 ++ block/file-win32.c | 3 +++ block/gluster.c | 3 +++ block/iscsi-opts.c | 1 + block/iscsi.c | 3 ++- block/nbd.c | 2 +- block/nfs.c | 2 +- block/null.c | 1 + block/parallels.c | 3 ++- block/parallels.h | 1 - block/qapi.c | 6 +++++- block/qcow.c | 5 +++-- block/qcow2-cluster.c | 1 - block/qcow2.c | 6 ++++-- block/qed.c | 2 +- block/quorum.c | 4 ++-- block/rbd.c | 3 +++ block/replication.c | 2 +- block/sheepdog.c | 1 + block/snapshot.c | 2 ++ block/ssh.c | 2 ++ block/throttle.c | 1 + block/vdi.c | 1 + block/vhdx.c | 2 +- block/vmdk.c | 1 + block/vpc.c | 3 ++- block/vvfat.c | 4 +++- block/write-threshold.c | 1 + blockdev-nbd.c | 2 +- blockdev.c | 5 ++++- blockjob.c | 3 +-- chardev/char-file.c | 3 ++- chardev/char-mux.c | 3 ++- chardev/char-parallel.c | 2 ++ chardev/char-pipe.c | 2 ++ chardev/char-ringbuf.c | 3 +++ chardev/char-serial.c | 2 ++ chardev/char-socket.c | 2 ++ chardev/char-stdio.c | 3 ++- chardev/char-udp.c | 2 ++ chardev/char.c | 3 +++ chardev/spice.c | 2 ++ contrib/ivshmem-server/main.c | 2 +- cpus.c | 4 +++- crypto/hash.c | 1 - crypto/hmac.c | 1 - crypto/ivgen-essiv.c | 1 - crypto/ivgen-plain.c | 1 - crypto/ivgen-plain64.c | 1 - crypto/random-gnutls.c | 1 + crypto/random-platform.c | 1 + device-hotplug.c | 2 ++ device_tree.c | 2 +- docs/devel/qapi-code-gen.txt | 2 -- dump.c | 1 + fsdev/qemu-fsdev-throttle.c | 1 + fsdev/qemu-fsdev-throttle.h | 1 - fsdev/qemu-fsdev.c | 4 +++- fsdev/qemu-fsdev.h | 1 - hmp.c | 1 + hmp.h | 2 -- hw/9pfs/9p-handle.c | 1 + hw/9pfs/9p-local.c | 2 ++ hw/9pfs/9p-proxy.c | 3 +++ hw/9pfs/xen-9p-backend.c | 1 + hw/acpi/acpi-stub.c | 2 +- hw/acpi/core.c | 3 +++ hw/acpi/memory_hotplug.c | 1 + hw/acpi/vmgenid.c | 1 + hw/adc/stm32f2xx_adc.c | 1 - hw/arm/boot.c | 1 + hw/block/vhost-user-blk.c | 1 - hw/char/mcf_uart.c | 1 - hw/char/virtio-console.c | 1 + hw/core/qdev.c | 3 ++- hw/display/milkymist-tmu2.c | 1 + hw/display/qxl.c | 1 + hw/display/virtio-gpu-3d.c | 1 - hw/display/xlnx_dp.c | 1 + hw/i2c/ppc4xx_i2c.c | 1 - hw/i386/acpi-build.c | 1 + hw/i386/multiboot.c | 2 +- hw/i386/pc.c | 3 +++ hw/i386/pc_piix.c | 1 + hw/i386/pc_q35.c | 2 ++ hw/i386/pc_sysfw.c | 1 + hw/i386/xen/xen-hvm.c | 2 +- hw/ide/core.c | 2 ++ hw/ide/sii3112.c | 1 + hw/intc/xics_pnv.c | 1 - hw/intc/xics_spapr.c | 1 - hw/ipmi/ipmi.c | 1 + hw/mips/mips_jazz.c | 1 + hw/mips/mips_malta.c | 1 + hw/misc/exynos4210_rng.c | 1 + hw/misc/mips_cmgcr.c | 1 - hw/misc/mps2-scc.c | 1 - hw/net/rocker/qmp-norocker.c | 1 + hw/net/rocker/rocker.c | 1 + hw/net/rocker/rocker_of_dpa.c | 1 + hw/net/virtio-net.c | 2 +- hw/nios2/cpu_pic.c | 1 - hw/nvram/eeprom_at24c.c | 3 +-- hw/nvram/fw_cfg.c | 2 ++ hw/pci-bridge/i82801b11.c | 1 - hw/pci-bridge/ioh3420.c | 1 - hw/pci-bridge/xio3130_upstream.c | 1 - hw/pci-host/sabre.c | 1 - hw/pci/pci-stub.c | 1 + hw/pci/pci.c | 2 ++ hw/pci/pcie_aer.c | 3 +-- hw/ppc/e500.c | 2 +- hw/ppc/fdt.c | 1 - hw/ppc/pnv_bmc.c | 1 - hw/ppc/pnv_xscom.c | 1 - hw/ppc/ppc.c | 1 - hw/ppc/spapr.c | 1 - hw/ppc/spapr_drc.c | 1 + hw/ppc/spapr_pci_vfio.c | 1 - hw/ppc/spapr_rtas.c | 1 + hw/ppc/spapr_rtc.c | 2 ++ hw/ppc/virtex_ml507.c | 1 + hw/s390x/s390-skeys.c | 1 + hw/s390x/s390-stattrib.c | 2 +- hw/s390x/s390-virtio-ccw.c | 3 +-- hw/scsi/esp.c | 1 - hw/scsi/scsi-bus.c | 1 + hw/scsi/vhost-scsi-common.c | 1 - hw/sd/sdhci.c | 1 - hw/smbios/smbios-stub.c | 2 +- hw/smbios/smbios.c | 1 + hw/sparc64/niagara.c | 1 - hw/sparc64/sun4u_iommu.c | 1 - hw/ssi/stm32f2xx_spi.c | 1 - hw/timer/m48t59.c | 1 - hw/timer/mc146818rtc.c | 2 ++ hw/tpm/tpm_emulator.c | 4 ---- hw/tpm/tpm_int.h | 2 -- hw/tpm/tpm_ioctl.h | 2 -- hw/usb/ccid-card-passthru.c | 1 - hw/usb/xen-usb.c | 4 ++-- hw/vfio/pci.c | 1 + hw/virtio/virtio-balloon.c | 1 + hw/watchdog/watchdog.c | 2 +- hw/xen/xen-common.c | 1 - hw/xen/xen_devconfig.c | 1 + hw/xtensa/xtensa_memory.h | 1 - hw/xtensa/xtfpga.c | 2 +- include/block/block.h | 4 +--- include/block/block_int.h | 2 -- include/block/dirty-bitmap.h | 1 + include/block/nbd.h | 2 -- include/block/qapi.h | 1 - include/block/snapshot.h | 2 -- include/chardev/char.h | 2 -- include/crypto/random.h | 1 - include/crypto/xts.h | 1 - include/exec/tb-lookup.h | 2 -- include/hw/acpi/acpi.h | 1 - include/hw/acpi/acpi_dev_interface.h | 1 - include/hw/block/block.h | 1 + include/hw/block/fdc.h | 1 + include/hw/ide/internal.h | 1 - include/hw/intc/xlnx-pmu-iomod-intc.h | 1 - include/hw/intc/xlnx-zynqmp-ipi.h | 1 - include/hw/loader.h | 1 - include/hw/nvram/fw_cfg.h | 1 - include/hw/pci-bridge/simba.h | 1 - include/hw/qdev-core.h | 1 - include/hw/smbios/smbios.h | 1 - include/hw/xtensa/xtensa-isa.h | 2 -- include/migration/colo.h | 1 + include/monitor/monitor.h | 1 - include/net/net.h | 5 +---- include/net/slirp.h | 4 ---- include/net/tap.h | 1 - include/qapi/clone-visitor.h | 1 - include/qapi/opts-visitor.h | 1 - include/qapi/qmp-event.h | 1 - include/qapi/qmp/dispatch.h | 3 +-- include/qapi/qmp/json-parser.h | 1 - include/qapi/qmp/qbool.h | 4 ++-- include/qapi/qmp/qdict.h | 21 ++++++------------ include/qapi/qmp/qjson.h | 3 --- include/qapi/qmp/qlist.h | 19 ++++++---------- include/qapi/qmp/qlit.h | 1 - include/qapi/qmp/qnum.h | 4 ++-- include/qapi/qmp/qstring.h | 4 ++-- include/qapi/qmp/types.h | 24 --------------------- include/qapi/qobject-input-visitor.h | 1 - include/qapi/qobject-output-visitor.h | 1 - include/qapi/visitor.h | 2 +- include/qemu-common.h | 2 -- include/qemu/config-file.h | 2 -- include/qemu/option.h | 1 - include/qemu/throttle.h | 1 + include/qemu/typedefs.h | 7 +++++- include/qom/object_interfaces.h | 1 - include/scsi/pr-manager.h | 1 - include/sysemu/arch_init.h | 3 +-- include/sysemu/dump.h | 1 - include/sysemu/hostmem.h | 1 - include/sysemu/hvf.h | 2 -- include/sysemu/numa.h | 1 - include/sysemu/replay.h | 1 - include/sysemu/sysemu.h | 2 -- include/sysemu/tpm.h | 1 - include/sysemu/tpm_backend.h | 1 - include/ui/console.h | 4 ---- include/ui/qemu-spice.h | 1 - io/channel-websock.c | 3 --- iothread.c | 1 + linux-user/syscall.c | 1 - migration/colo-failover.c | 1 + migration/colo.c | 1 + migration/exec.c | 1 - migration/fd.c | 1 - migration/migration.c | 2 ++ migration/migration.h | 1 - migration/ram.c | 2 ++ migration/ram.h | 1 + migration/savevm.c | 1 + monitor.c | 8 ++++--- nbd/common.c | 1 - net/clients.h | 1 - net/colo-compare.c | 1 - net/filter-mirror.c | 1 - net/filter-replay.c | 1 - net/filter-rewriter.c | 2 -- net/net.c | 4 +++- net/slirp.c | 2 ++ net/vde.c | 1 + net/vhost-user.c | 2 ++ numa.c | 1 + qapi/qapi-dealloc-visitor.c | 2 +- qapi/qapi-visit-core.c | 1 - qapi/qmp-dispatch.c | 4 +--- qapi/qmp-event.c | 1 + qapi/qobject-input-visitor.c | 7 +++++- qapi/qobject-output-visitor.c | 7 +++++- qdev-monitor.c | 2 ++ qemu-img.c | 5 +++-- qemu-io-cmds.c | 1 + qemu-io.c | 3 ++- qemu-keymap.c | 1 - qemu-nbd.c | 3 ++- qga/commands-posix.c | 1 + qga/commands-win32.c | 2 ++ qga/commands.c | 1 + qga/guest-agent-core.h | 2 +- qga/main.c | 5 ++++- qga/vss-win32.c | 1 + qmp.c | 3 ++- qobject/json-parser.c | 7 +++++- qobject/qbool.c | 1 - qobject/qdict.c | 23 +++++++++++++++++++- qobject/qjson.c | 6 +++++- qobject/qlist.c | 25 +++++++++++++++++++++- qobject/qlit.c | 6 +++++- qobject/qnum.c | 2 -- qobject/qobject.c | 7 +++++- qobject/qstring.c | 1 - qom/object.c | 2 +- qom/object_interfaces.c | 2 ++ replay/replay-input.c | 1 - replay/replay.c | 2 +- scripts/qapi-commands.py | 4 ++-- scripts/qapi-event.py | 2 +- scsi/pr-helper.h | 2 -- stubs/arch-query-cpu-def.c | 1 + stubs/arch-query-cpu-model-baseline.c | 1 + stubs/arch-query-cpu-model-comparison.c | 1 + stubs/arch-query-cpu-model-expansion.c | 1 + stubs/dump.c | 1 - stubs/vmgenid.c | 1 + target/i386/cpu.c | 5 +++-- target/i386/hvf/vmx.h | 1 - target/i386/hvf/x86hvf.c | 3 --- target/i386/monitor.c | 2 ++ target/i386/xsave_helper.c | 1 - target/nios2/helper.c | 1 - target/ppc/mmu-book3s-v3.c | 1 - target/ppc/mmu-hash64.c | 1 - target/ppc/mmu-radix64.c | 1 - target/ppc/mmu_helper.c | 1 - target/ppc/translate_init.c | 2 ++ target/s390x/cpu_models.c | 2 +- target/s390x/excp_helper.c | 1 - target/s390x/helper.c | 1 - target/s390x/kvm.c | 1 - target/xtensa/core-dc232b/xtensa-modules.c | 1 + target/xtensa/core-dc233c/xtensa-modules.c | 1 + target/xtensa/core-de212/xtensa-modules.c | 1 + target/xtensa/core-fsf/xtensa-modules.c | 1 + .../xtensa/core-sample_controller/xtensa-modules.c | 1 + target/xtensa/xtensa-isa.c | 4 +--- tests/ahci-test.c | 1 + tests/check-qdict.c | 3 +++ tests/check-qjson.c | 5 ++++- tests/check-qlist.c | 1 - tests/check-qlit.c | 3 +-- tests/check-qnum.c | 1 - tests/check-qobject.c | 8 ++++++- tests/cpu-plug-test.c | 2 +- tests/device-introspect-test.c | 2 +- tests/drive_del-test.c | 1 + tests/io-channel-helpers.c | 1 - tests/libqos/libqos.c | 1 + tests/libqos/pci-pc.c | 2 +- tests/libqtest.c | 4 ++++ tests/libqtest.h | 2 -- tests/migration-test.c | 1 + tests/migration/stress.c | 10 +-------- tests/numa-test.c | 2 ++ tests/ptimer-test.c | 4 ++-- tests/pvpanic-test.c | 1 + tests/q35-test.c | 1 + tests/qmp-test.c | 2 ++ tests/qom-test.c | 3 ++- tests/tco-test.c | 2 ++ tests/test-aio-multithread.c | 1 - tests/test-char.c | 2 +- tests/test-clone-visitor.c | 2 -- tests/test-keyval.c | 2 ++ tests/test-netfilter.c | 1 + tests/test-qapi-util.c | 1 - tests/test-qemu-opts.c | 2 ++ tests/test-qga.c | 2 ++ tests/test-qmp-commands.c | 6 ++++-- tests/test-qmp-event.c | 8 ++++--- tests/test-qobject-input-visitor.c | 7 ++++-- tests/test-qobject-output-visitor.c | 9 +++++--- tests/test-replication.c | 2 ++ tests/test-string-input-visitor.c | 2 -- tests/test-string-output-visitor.c | 2 -- tests/test-visitor-serialization.c | 4 +--- tests/test-x86-cpuid-compat.c | 2 +- tests/tmp105-test.c | 1 + tests/vhost-user-test.c | 1 + tests/virtio-net-test.c | 1 + tests/vmgenid-test.c | 1 + tests/wdt_ib700-test.c | 1 + tpm.c | 2 ++ trace/control-internal.h | 2 -- trace/control.c | 1 + trace/qmp.c | 1 + ui/cocoa.m | 1 - ui/console.c | 4 +++- ui/gtk.c | 1 + ui/input-legacy.c | 1 - ui/input.c | 2 +- ui/spice-core.c | 6 ++---- ui/spice-display.c | 2 +- ui/vnc-palette.h | 1 - ui/vnc.c | 4 ++-- ui/vnc.h | 1 - util/keyval.c | 2 ++ util/qemu-config.c | 2 ++ util/qemu-option.c | 5 ++++- vl.c | 3 ++- 373 files changed, 469 insertions(+), 375 deletions(-) delete mode 100644 include/qapi/qmp/types.h Reviewed-by: Philippe Mathieu-Daudé