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