qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 00/18] Clean up includes to reduce compile time


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH 00/18] Clean up includes to reduce compile time
Date: Tue, 30 Jan 2018 15:36:29 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2

On 01/30/2018 07:21 AM, Markus Armbruster wrote:
> 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.

nice cleanup :)

No more comment than what Eric said (mostly newlines),
and Zoltan regarding <qemu/osdep.h>, so
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>

Is there a way to check if an header got used or not?
(thinking about a patchew check to not add headers until effectively used).

> 
> 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
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]