qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PATCH v3 18/19] hw: Constify various TypeInfo and associated structures
Date: Wed, 12 Feb 2025 22:32:48 +0100	[thread overview]
Message-ID: <20250212213249.45574-19-philmd@linaro.org> (raw)
In-Reply-To: <20250212213249.45574-1-philmd@linaro.org>

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[] = {
     {
         .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)
-- 
2.47.1



  parent reply	other threads:[~2025-02-12 21:35 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-12 21:32 [PATCH v3 00/19] qom: Constify class_data Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 01/19] hw: Declare various const data as 'const' Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 02/19] hw: Make class data 'const' Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 03/19] target/i386: Constify X86CPUModel uses Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 04/19] target/sparc: Constify SPARCCPUClass::cpu_def Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 05/19] target/xtensa: Finalize config in xtensa_register_core() Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 06/19] target/riscv: Declare RISCVCPUClass::misa_mxl_max as RISCVMXL Philippe Mathieu-Daudé
2025-02-17  5:08   ` Alistair Francis
2025-02-12 21:32 ` [PATCH v3 07/19] target/riscv: Convert misa_mxl_max using GLib macros Philippe Mathieu-Daudé
2025-02-17  5:13   ` Alistair Francis
2025-02-12 21:32 ` [PATCH v3 08/19] qom: Have class_base_init() take a const data argument Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 09/19] qom: Have class_init() " Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 10/19] qom: Constify TypeInfo::class_data Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 11/19] qom: Constify InterfaceInfo[] interfaces Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 12/19] hw/virtio/virtio-pci: Always allocate QOM type base_name Philippe Mathieu-Daudé
2025-02-12 22:06   ` Richard Henderson
2025-02-12 21:32 ` [PATCH v3 13/19] hw/virtio/virtio-pci: Assert before registering QOM types Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 14/19] hw/virtio/virtio-pci: Do not access base_type_info.name directly Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 15/19] hw/virtio/virtio-pci: Constify base_type_info Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 16/19] hw/virtio/virtio-pci: Constify generic_type_info Philippe Mathieu-Daudé
2025-02-12 21:32 ` [PATCH v3 17/19] hw/virtio/virtio-pci: Reduce generic_type_info scope Philippe Mathieu-Daudé
2025-02-12 21:32 ` Philippe Mathieu-Daudé [this message]
2025-02-12 22:10   ` [PATCH v3 18/19] hw: Constify various TypeInfo and associated structures Richard Henderson
2025-02-12 21:32 ` [PATCH v3 19/19] qom: Require TypeInfo::class_data points to const data Philippe Mathieu-Daudé
2025-02-12 22:11   ` Richard Henderson
2025-02-18 16:51     ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250212213249.45574-19-philmd@linaro.org \
    --to=philmd@linaro.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).