[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 00/19] Clean up includes to reduce compile time
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v2 00/19] Clean up includes to reduce compile time |
Date: |
Wed, 31 Jan 2018 15:48:27 +0100 |
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.
v2:
* PATCH 01: New [BALATON Zoltan]
* PATCH 02: Clean up a few more (hw/ide/sii3112.c
target/i386/hax-all.c target/i386/hvf/ target/xtensa/); R-bys
dropped
* PATCH 02,04,10: Commit message improved [Eric]
* PATCH 04: Unbreak include/ui/console.h for !CONFIG_VNC, and
target/s390x/kvm.c [Patchew]
* PATCH 04,11,12,19: Additional whitespace cleanup
* PATCH 04,09,11,12,19: Commit message numbers updated
Markus Armbruster (19):
Use #include "..." for our own headers, <...> for others
Clean up includes
Drop superfluous includes of qapi-types.h and test-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 +-
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 +-
contrib/vhost-user-scsi/vhost-user-scsi.c | 4 ++--
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 | 5 +++--
fsdev/qemu-fsdev.h | 1 -
hmp.c | 1 +
hmp.h | 2 --
hw/9pfs/9p-handle.c | 1 +
hw/9pfs/9p-local.c | 3 ++-
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 | 4 ++--
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_rtc.c | 3 ++-
hw/ppc/virtex_ml507.c | 1 +
hw/s390x/s390-ccw.c | 3 ++-
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 | 5 -----
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-fit.h | 2 +-
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/registerfields.h | 2 +-
include/hw/s390x/storage-attributes.h | 2 +-
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 | 5 ++---
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/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/hax-all.c | 1 -
target/i386/hvf/hvf.c | 1 -
target/i386/hvf/vmx.h | 1 -
target/i386/hvf/x86_decode.c | 1 -
target/i386/hvf/x86_mmu.c | 6 ++----
target/i386/hvf/x86_task.c | 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/gen-features.c | 4 ++--
target/s390x/helper.c | 1 -
target/s390x/kvm.c | 2 +-
target/xtensa/core-dc232b/xtensa-modules.c | 3 ++-
target/xtensa/core-dc233c/xtensa-modules.c | 3 ++-
target/xtensa/core-de212/xtensa-modules.c | 3 ++-
target/xtensa/core-fsf/xtensa-modules.c | 3 ++-
.../xtensa/core-sample_controller/xtensa-modules.c | 3 ++-
target/xtensa/xtensa-isa.c | 4 +---
target/xtensa/xtensa-isa.h | 2 +-
tests/ahci-test.c | 1 +
tests/check-qdict.c | 4 +++-
tests/check-qjson.c | 5 ++++-
tests/check-qlist.c | 1 -
tests/check-qlit.c | 3 +--
tests/check-qnum.c | 1 -
tests/check-qobject.c | 9 ++++++--
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 | 5 ++++-
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 | 5 +++--
382 files changed, 487 insertions(+), 407 deletions(-)
delete mode 100644 include/qapi/qmp/types.h
--
2.13.6
- [Qemu-devel] [PATCH v2 00/19] Clean up includes to reduce compile time,
Markus Armbruster <=
- [Qemu-devel] [PATCH v2 01/19] Use #include "..." for our own headers, <...> for others, Markus Armbruster, 2018/01/31
- [Qemu-devel] [PATCH v2 10/19] Include qapi/qmp/qobject.h exactly where needed, Markus Armbruster, 2018/01/31
- [Qemu-devel] [PATCH v2 16/19] Include qapi/qmp/qnull.h exactly where needed, Markus Armbruster, 2018/01/31
- [Qemu-devel] [PATCH v2 03/19] Drop superfluous includes of qapi-types.h and test-qapi-types.h, Markus Armbruster, 2018/01/31
- [Qemu-devel] [PATCH v2 02/19] Clean up includes, Markus Armbruster, 2018/01/31