[PATCH 00/13] remove some types from typedefs.h

Paolo Bonzini posted 13 patches 2 weeks, 1 day ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240502155331.109297-1-pbonzini@redhat.com
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Yanan Wang <wangyanan55@huawei.com>, "Michael S. Tsirkin" <mst@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Jason Wang <jasowang@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Markus Armbruster <armbru@redhat.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, David Hildenbrand <david@redhat.com>
accel/tcg/tb-jmp-cache.h     |  4 ++--
hw/display/vga_int.h         |  1 +
include/hw/core/cpu.h        | 11 +++++++++--
include/hw/intc/i8259.h      |  2 ++
include/hw/nvram/fw_cfg.h    |  2 ++
include/hw/pci/pcie.h        |  3 +++
include/hw/pci/pcie_aer.h    | 38 ++++++++++++++++++------------------
include/hw/pci/pcie_sriov.h  |  8 ++++----
include/hw/qdev-core.h       |  1 +
include/monitor/hmp-target.h | 11 +++++++----
include/net/announce.h       |  4 ++--
include/qemu/coroutine.h     |  4 ++--
include/qemu/lockable.h      |  4 ++--
include/qemu/option.h        |  2 ++
include/qemu/typedefs.h      | 23 ----------------------
include/sysemu/numa.h        |  8 ++++----
migration/postcopy-ram.c     |  4 ++--
stubs/target-monitor-defs.c  |  3 +--
system/physmem.c             |  4 ++--
19 files changed, 67 insertions(+), 70 deletions(-)
[PATCH 00/13] remove some types from typedefs.h
Posted by Paolo Bonzini 2 weeks, 1 day ago
The main reason for typedefs.h to exist is to avoid the need for
"struct Foo;" forward declarations of types that are needed in function
prototypes.  It avoids the infamous "struct declared inside parameter list
will not be visible outside of this definition or declaration" warning.
Another less common use is when the struct is used as a pointer in
another struct (when the struct is embedded by value, the typedef is
obviously not enough).

This series is a first pass removing unnecessary typedefs.  In most
cases, the users are actually already including it.  In a few patches
towards the end, new includes are introduced but not in files that
already "rebuild the world" when changed.

Personally, I think that in many cases the uses are so limited
(often they only appear only in the few non-qdev boards that are
left) that they could use forward declarations of structs.  I did
that for patch 12 (tcg) because there are already a couple of
forward declataions in include/hw/core/cpu.h, but that's more as
food for thought than anything else.

Paolo

Paolo Bonzini (13):
  fw_cfg: remove useless declarations from typedefs.h
  qdev-core: remove DeviceListener from typedefs.h
  numa: remove types from typedefs.h
  net: remove AnnounceTimer from typedefs.h
  qemu-option: remove QemuOpt from typedefs.h
  intc: remove PICCommonState from typedefs.h
  lockable: remove QemuLockable from typedefs.h
  migration: remove PostcopyDiscardState from typedefs.h
  monitor: remove MonitorDef from typedefs.h
  qapi/machine: remove types from typedefs.h
  display: remove GraphicHwOps from typedefs.h
  tcg: remove CPU* types from typedefs.h
  pci: remove some types from typedefs.h

 accel/tcg/tb-jmp-cache.h     |  4 ++--
 hw/display/vga_int.h         |  1 +
 include/hw/core/cpu.h        | 11 +++++++++--
 include/hw/intc/i8259.h      |  2 ++
 include/hw/nvram/fw_cfg.h    |  2 ++
 include/hw/pci/pcie.h        |  3 +++
 include/hw/pci/pcie_aer.h    | 38 ++++++++++++++++++------------------
 include/hw/pci/pcie_sriov.h  |  8 ++++----
 include/hw/qdev-core.h       |  1 +
 include/monitor/hmp-target.h | 11 +++++++----
 include/net/announce.h       |  4 ++--
 include/qemu/coroutine.h     |  4 ++--
 include/qemu/lockable.h      |  4 ++--
 include/qemu/option.h        |  2 ++
 include/qemu/typedefs.h      | 23 ----------------------
 include/sysemu/numa.h        |  8 ++++----
 migration/postcopy-ram.c     |  4 ++--
 stubs/target-monitor-defs.c  |  3 +--
 system/physmem.c             |  4 ++--
 19 files changed, 67 insertions(+), 70 deletions(-)

-- 
2.44.0