diff mbox series

[v3,18/19] hw: Constify various TypeInfo and associated structures

Message ID 20250212213249.45574-19-philmd@linaro.org
State New
Headers show
Series qom: Constify class_data | expand

Commit Message

Philippe Mathieu-Daudé Feb. 12, 2025, 9:32 p.m. UTC
Constify various TypeInfo structures.

When they are generated from an array, also constify the array.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/net/e1000.c             | 12 ++++++------
 hw/rtc/m48t59-isa.c        | 22 +++++++++++-----------
 hw/rtc/m48t59.c            | 22 +++++++++++-----------
 hw/scsi/megasas.c          | 16 ++++++++--------
 hw/usb/hcd-ehci-pci.c      | 20 ++++++++++----------
 hw/usb/hcd-uhci.c          | 20 ++++++++++----------
 hw/usb/vt82c686-uhci-pci.c |  6 +++---
 7 files changed, 59 insertions(+), 59 deletions(-)

Comments

Richard Henderson Feb. 12, 2025, 10:10 p.m. UTC | #1
On 2/12/25 13:32, Philippe Mathieu-Daudé wrote:
> Constify various TypeInfo structures.
> 
> When they are generated from an array, also constify the array.
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   hw/net/e1000.c             | 12 ++++++------
>   hw/rtc/m48t59-isa.c        | 22 +++++++++++-----------
>   hw/rtc/m48t59.c            | 22 +++++++++++-----------
>   hw/scsi/megasas.c          | 16 ++++++++--------
>   hw/usb/hcd-ehci-pci.c      | 20 ++++++++++----------
>   hw/usb/hcd-uhci.c          | 20 ++++++++++----------
>   hw/usb/vt82c686-uhci-pci.c |  6 +++---
>   7 files changed, 59 insertions(+), 59 deletions(-)
> 
> diff --git a/hw/net/e1000.c b/hw/net/e1000.c
> index cba4999e6d0..4436c2ce0cc 100644
> --- a/hw/net/e1000.c
> +++ b/hw/net/e1000.c
> @@ -1766,12 +1766,12 @@ static void e1000_register_types(void)
>       type_register_static(&e1000_base_info);
>       for (i = 0; i < ARRAY_SIZE(e1000_devices); i++) {
>           const E1000Info *info = &e1000_devices[i];
> -        TypeInfo type_info = {};
> -
> -        type_info.name = info->name;
> -        type_info.parent = TYPE_E1000_BASE;
> -        type_info.class_data = info;
> -        type_info.class_init = e1000_class_init;
> +        const TypeInfo type_info = {
> +            .name       = info->name,
> +            .parent     = TYPE_E1000_BASE,
> +            .class_data = info,
> +            .class_init = e1000_class_init,
> +        };
>   
>           type_register_static(&type_info);
>       }
> diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
> index 9e2f6563a0a..152208d931e 100644
> --- a/hw/rtc/m48t59-isa.c
> +++ b/hw/rtc/m48t59-isa.c
> @@ -51,7 +51,7 @@ struct M48txxISADeviceClass {
>       M48txxInfo info;
>   };
>   
> -static M48txxInfo m48txx_isa_info[] = {
> +static const M48txxInfo m48txx_isa_info[] = {

I wouldn't mix constifying TypeInfo with constifying class_data.


r~
diff mbox series

Patch

diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index cba4999e6d0..4436c2ce0cc 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -1766,12 +1766,12 @@  static void e1000_register_types(void)
     type_register_static(&e1000_base_info);
     for (i = 0; i < ARRAY_SIZE(e1000_devices); i++) {
         const E1000Info *info = &e1000_devices[i];
-        TypeInfo type_info = {};
-
-        type_info.name = info->name;
-        type_info.parent = TYPE_E1000_BASE;
-        type_info.class_data = info;
-        type_info.class_init = e1000_class_init;
+        const TypeInfo type_info = {
+            .name       = info->name,
+            .parent     = TYPE_E1000_BASE,
+            .class_data = info,
+            .class_init = e1000_class_init,
+        };
 
         type_register_static(&type_info);
     }
diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
index 9e2f6563a0a..152208d931e 100644
--- a/hw/rtc/m48t59-isa.c
+++ b/hw/rtc/m48t59-isa.c
@@ -51,7 +51,7 @@  struct M48txxISADeviceClass {
     M48txxInfo info;
 };
 
-static M48txxInfo m48txx_isa_info[] = {
+static const M48txxInfo m48txx_isa_info[] = {
     {
         .bus_name = "isa-m48t59",
         .model = 59,
@@ -148,18 +148,18 @@  static const TypeInfo m48txx_isa_type_info = {
 
 static void m48t59_isa_register_types(void)
 {
-    TypeInfo isa_type_info = {
-        .parent = TYPE_M48TXX_ISA,
-        .class_size = sizeof(M48txxISADeviceClass),
-        .class_init = m48txx_isa_concrete_class_init,
-    };
-    int i;
-
     type_register_static(&m48txx_isa_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(m48txx_isa_info); i++) {
-        isa_type_info.name = m48txx_isa_info[i].bus_name;
-        isa_type_info.class_data = &m48txx_isa_info[i];
+    for (unsigned i = 0; i < ARRAY_SIZE(m48txx_isa_info); i++) {
+        const M48txxInfo *info = &m48txx_isa_info[i];
+        const TypeInfo isa_type_info = {
+            .name       = info->bus_name,
+            .parent     = TYPE_M48TXX_ISA,
+            .class_size = sizeof(M48txxISADeviceClass),
+            .class_init = m48txx_isa_concrete_class_init,
+            .class_data = info,
+        };
+
         type_register_static(&isa_type_info);
     }
 }
diff --git a/hw/rtc/m48t59.c b/hw/rtc/m48t59.c
index 68be2dad6f3..967331401a7 100644
--- a/hw/rtc/m48t59.c
+++ b/hw/rtc/m48t59.c
@@ -66,7 +66,7 @@  struct M48txxSysBusDeviceClass {
     M48txxInfo info;
 };
 
-static M48txxInfo m48txx_sysbus_info[] = {
+static const M48txxInfo m48txx_sysbus_info[] = {
     {
         .bus_name = "sysbus-m48t02",
         .model = 2,
@@ -666,19 +666,19 @@  static const TypeInfo m48txx_sysbus_type_info = {
 
 static void m48t59_register_types(void)
 {
-    TypeInfo sysbus_type_info = {
-        .parent = TYPE_M48TXX_SYS_BUS,
-        .class_size = sizeof(M48txxSysBusDeviceClass),
-        .class_init = m48txx_sysbus_concrete_class_init,
-    };
-    int i;
-
     type_register_static(&nvram_info);
     type_register_static(&m48txx_sysbus_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(m48txx_sysbus_info); i++) {
-        sysbus_type_info.name = m48txx_sysbus_info[i].bus_name;
-        sysbus_type_info.class_data = &m48txx_sysbus_info[i];
+    for (unsigned i = 0; i < ARRAY_SIZE(m48txx_sysbus_info); i++) {
+        const M48txxInfo *info = &m48txx_sysbus_info[i];
+        const TypeInfo sysbus_type_info = {
+            .name       = info->bus_name,
+            .parent     = TYPE_M48TXX_SYS_BUS,
+            .class_size = sizeof(M48txxSysBusDeviceClass),
+            .class_init = m48txx_sysbus_concrete_class_init,
+            .class_data = info,
+        };
+
         type_register_static(&sysbus_type_info);
     }
 }
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 03cd837b44f..ccd87fb0604 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2490,7 +2490,7 @@  typedef struct MegasasInfo {
     const InterfaceInfo *interfaces;
 } MegasasInfo;
 
-static struct MegasasInfo megasas_devices[] = {
+static const struct MegasasInfo megasas_devices[] = {
     {
         .name = TYPE_MEGASAS_GEN1,
         .desc = "LSI MegaRAID SAS 1078",
@@ -2569,13 +2569,13 @@  static void megasas_register_types(void)
     type_register_static(&megasas_info);
     for (i = 0; i < ARRAY_SIZE(megasas_devices); i++) {
         const MegasasInfo *info = &megasas_devices[i];
-        TypeInfo type_info = {};
-
-        type_info.name = info->name;
-        type_info.parent = TYPE_MEGASAS_BASE;
-        type_info.class_data = info;
-        type_info.class_init = megasas_class_init;
-        type_info.interfaces = info->interfaces;
+        const TypeInfo type_info = {
+            .name       = info->name,
+            .parent     = TYPE_MEGASAS_BASE,
+            .class_data = info,
+            .class_init = megasas_class_init,
+            .interfaces = info->interfaces,
+        };
 
         type_register_static(&type_info);
     }
diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
index 38ad3406b32..5a96c15c67c 100644
--- a/hw/usb/hcd-ehci-pci.c
+++ b/hw/usb/hcd-ehci-pci.c
@@ -193,7 +193,7 @@  static void ehci_data_class_init(ObjectClass *klass, const void *data)
     }
 }
 
-static struct EHCIPCIInfo ehci_pci_info[] = {
+static const struct EHCIPCIInfo ehci_pci_info[] = {
     {
         .name      = "usb-ehci",
         .vendor_id = PCI_VENDOR_ID_INTEL,
@@ -216,17 +216,17 @@  static struct EHCIPCIInfo ehci_pci_info[] = {
 
 static void ehci_pci_register_types(void)
 {
-    TypeInfo ehci_type_info = {
-        .parent        = TYPE_PCI_EHCI,
-        .class_init    = ehci_data_class_init,
-    };
-    int i;
-
     type_register_static(&ehci_pci_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(ehci_pci_info); i++) {
-        ehci_type_info.name = ehci_pci_info[i].name;
-        ehci_type_info.class_data = ehci_pci_info + i;
+    for (unsigned i = 0; i < ARRAY_SIZE(ehci_pci_info); i++) {
+        const EHCIPCIInfo *info = &ehci_pci_info[i];
+        const TypeInfo ehci_type_info = {
+            .name       = info->name,
+            .parent     = TYPE_PCI_EHCI,
+            .class_data = info,
+            .class_init = ehci_data_class_init,
+        };
+
         type_register_static(&ehci_type_info);
     }
 }
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 4822c704f69..9c671f53684 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1309,7 +1309,7 @@  void uhci_data_class_init(ObjectClass *klass, const void *data)
     u->info = *info;
 }
 
-static UHCIInfo uhci_info[] = {
+static const UHCIInfo uhci_info[] = {
     {
         .name      = TYPE_PIIX3_USB_UHCI,
         .vendor_id = PCI_VENDOR_ID_INTEL,
@@ -1371,17 +1371,17 @@  static UHCIInfo uhci_info[] = {
 
 static void uhci_register_types(void)
 {
-    TypeInfo uhci_type_info = {
-        .parent        = TYPE_UHCI,
-        .class_init    = uhci_data_class_init,
-    };
-    int i;
-
     type_register_static(&uhci_pci_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(uhci_info); i++) {
-        uhci_type_info.name = uhci_info[i].name;
-        uhci_type_info.class_data = uhci_info + i;
+    for (unsigned i = 0; i < ARRAY_SIZE(uhci_info); i++) {
+        const UHCIInfo *info = &uhci_info[i];
+        const TypeInfo uhci_type_info = {
+            .name       = info->name,
+            .parent     = TYPE_UHCI,
+            .class_data = info,
+            .class_init = uhci_data_class_init,
+        };
+
         type_register_static(&uhci_type_info);
     }
 }
diff --git a/hw/usb/vt82c686-uhci-pci.c b/hw/usb/vt82c686-uhci-pci.c
index 61628061722..cd5ca9c8850 100644
--- a/hw/usb/vt82c686-uhci-pci.c
+++ b/hw/usb/vt82c686-uhci-pci.c
@@ -26,7 +26,7 @@  static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Error **errp)
     s->irq = qemu_allocate_irq(uhci_isa_set_irq, s, 0);
 }
 
-static UHCIInfo uhci_info[] = {
+static const UHCIInfo uhci_info[] = {
     {
         .name      = TYPE_VT82C686B_USB_UHCI,
         .vendor_id = PCI_VENDOR_ID_VIA,
@@ -37,14 +37,14 @@  static UHCIInfo uhci_info[] = {
         .unplug    = true,
         /* Reason: only works as USB function of VT82xx superio chips */
         .notuser   = true,
-    }
+    },
 };
 
 static const TypeInfo vt82c686b_usb_uhci_type_info = {
     .parent         = TYPE_UHCI,
     .name           = TYPE_VT82C686B_USB_UHCI,
     .class_init     = uhci_data_class_init,
-    .class_data     = uhci_info,
+    .class_data     = &uhci_info[0],
 };
 
 static void vt82c686b_usb_uhci_register_types(void)