Various patches loosely related to single binary work:

- Replace cpu_list() definition by CPUClass::list_cpus() callback
 - Remove few MO_TE definitions on Hexagon / X86 targets
 - Remove target_ulong uses in  ARMMMUFaultInfo and ARM CPUWatchpoint
 - Remove DEVICE_HOST_ENDIAN definition
 - Evaluate TARGET_BIG_ENDIAN at compile time and use target_needs_bswap() more
 - Rename target_words_bigendian() as target_big_endian()
 - Convert target_name() and target_cpu_type() to TargetInfo API
 - Constify QOM TypeInfo class_data/interfaces fields
 - Get default_cpu_type calling machine_class_default_cpu_type()
 - Correct various uses of GLibCompareDataFunc prototype
 - Simplify ARM/Aarch64 gdb_get_core_xml_file() handling a bit
 - Move device tree files in their own pc-bios/dtb/ subdir
 - Correctly check strchrnul() symbol availability on macOS SDK
 - Move target-agnostic methods out of cpu-target.c and accel-target.c
 - Unmap canceled USB XHCI packet
 - Use deposit/extract API in designware model
 - Fix MIPS16e translation
 - Few missing header fixes
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmgLqb8ACgkQ4+MsLN6t
 wN6nCQ//cmv1M+NsndhO5TAK8T1eUSXKlTZh932uro6ZgxKwN4p+j1Qo7bq3O9gu
 qUMHNbcfQl8sHSytiXBoxCjLMCXC3u38iyz75WGXuPay06rs4wqmahqxL4tyno3l
 1RviFts9xlLn+tJqqrAR6+pRdALld0TY+yXUjXgr4aK5pIRpLz9U/sIEoh7qbA5U
 x0MTaceDG3A91OYo0TgrNbcMe1b9GqQZ+a4tbaP+oE37wbiKdyQ68LjrEbV08Y1O
 qrFF4oxquV31QJcUiuII1W7hC6psGrMsUA1f1qDu7QvmybAZWNZNsR9T66X9jH5J
 wXMShJmmXwxugohmuPPFnDshzJy90aFL6Jy2shrfqcG2v0W66ARY1ZnbJLCcfczt
 073bnE2dnOVhd/ny37RrIJNJLLmYM0yFDeKuYtNNAzpK9fpA7Q2PI8QiqNacQ3Pa
 TdEYrGlMk7OeNck8xJmJMY5rATthi1D4dIBv3rjQbUolQvPJe2Y9or0R2WL1jK5v
 hhr6DY01iSPES3CravmUs/aB1HRMPi/nX45OmFR6frAB7xqWMreh81heBVuoTTK8
 PuXtRQgRMRKwDeTxlc6p+zba4mIEYG8rqJtPFRgViNCJ1KsgSIowup3BNU05YuFn
 NoPoRayMDVMgejVgJin3Mg2DCYvt/+MBmO4IoggWlFsXj59uUgA=
 =DXnZ
 -----END PGP SIGNATURE-----

Merge tag 'single-binary-20250425' of https://github.com/philmd/qemu into staging

Various patches loosely related to single binary work:

- Replace cpu_list() definition by CPUClass::list_cpus() callback
- Remove few MO_TE definitions on Hexagon / X86 targets
- Remove target_ulong uses in  ARMMMUFaultInfo and ARM CPUWatchpoint
- Remove DEVICE_HOST_ENDIAN definition
- Evaluate TARGET_BIG_ENDIAN at compile time and use target_needs_bswap() more
- Rename target_words_bigendian() as target_big_endian()
- Convert target_name() and target_cpu_type() to TargetInfo API
- Constify QOM TypeInfo class_data/interfaces fields
- Get default_cpu_type calling machine_class_default_cpu_type()
- Correct various uses of GLibCompareDataFunc prototype
- Simplify ARM/Aarch64 gdb_get_core_xml_file() handling a bit
- Move device tree files in their own pc-bios/dtb/ subdir
- Correctly check strchrnul() symbol availability on macOS SDK
- Move target-agnostic methods out of cpu-target.c and accel-target.c
- Unmap canceled USB XHCI packet
- Use deposit/extract API in designware model
- Fix MIPS16e translation
- Few missing header fixes

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmgLqb8ACgkQ4+MsLN6t
# wN6nCQ//cmv1M+NsndhO5TAK8T1eUSXKlTZh932uro6ZgxKwN4p+j1Qo7bq3O9gu
# qUMHNbcfQl8sHSytiXBoxCjLMCXC3u38iyz75WGXuPay06rs4wqmahqxL4tyno3l
# 1RviFts9xlLn+tJqqrAR6+pRdALld0TY+yXUjXgr4aK5pIRpLz9U/sIEoh7qbA5U
# x0MTaceDG3A91OYo0TgrNbcMe1b9GqQZ+a4tbaP+oE37wbiKdyQ68LjrEbV08Y1O
# qrFF4oxquV31QJcUiuII1W7hC6psGrMsUA1f1qDu7QvmybAZWNZNsR9T66X9jH5J
# wXMShJmmXwxugohmuPPFnDshzJy90aFL6Jy2shrfqcG2v0W66ARY1ZnbJLCcfczt
# 073bnE2dnOVhd/ny37RrIJNJLLmYM0yFDeKuYtNNAzpK9fpA7Q2PI8QiqNacQ3Pa
# TdEYrGlMk7OeNck8xJmJMY5rATthi1D4dIBv3rjQbUolQvPJe2Y9or0R2WL1jK5v
# hhr6DY01iSPES3CravmUs/aB1HRMPi/nX45OmFR6frAB7xqWMreh81heBVuoTTK8
# PuXtRQgRMRKwDeTxlc6p+zba4mIEYG8rqJtPFRgViNCJ1KsgSIowup3BNU05YuFn
# NoPoRayMDVMgejVgJin3Mg2DCYvt/+MBmO4IoggWlFsXj59uUgA=
# =DXnZ
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 25 Apr 2025 11:26:55 EDT
# gpg:                using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE
# gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full]
# Primary key fingerprint: FAAB E75E 1291 7221 DCFD  6BB2 E3E3 2C2C DEAD C0DE

* tag 'single-binary-20250425' of https://github.com/philmd/qemu: (58 commits)
  qemu: Convert target_name() to TargetInfo API
  accel: Move target-agnostic code from accel-target.c -> accel-common.c
  accel: Make AccelCPUClass structure target-agnostic
  accel: Include missing 'qemu/accel.h' header in accel-internal.h
  accel: Implement accel_init_ops_interfaces() for both system/user mode
  cpus: Move target-agnostic methods out of cpu-target.c
  cpus: Replace CPU_RESOLVING_TYPE -> target_cpu_type()
  qemu: Introduce target_cpu_type()
  qapi: Rename TargetInfo structure as QemuTargetInfo
  hw/microblaze: Evaluate TARGET_BIG_ENDIAN at compile time
  hw/mips: Evaluate TARGET_BIG_ENDIAN at compile time
  target/xtensa: Evaluate TARGET_BIG_ENDIAN at compile time
  target/mips: Check CPU endianness at runtime using env_is_bigendian()
  accel/kvm: Use target_needs_bswap()
  linux-user/elfload: Use target_needs_bswap()
  target/hexagon: Include missing 'accel/tcg/getpc.h'
  accel/tcg: Correct list of included headers in tcg-stub.c
  system/kvm: make functions accessible from common code
  meson: Use osdep_prefix for strchrnul()
  meson: Share common C source prefixes
  ...

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2025-04-27 12:47:15 -04:00
commit 06b40d250e
1202 changed files with 2817 additions and 2612 deletions

View file

@ -498,8 +498,8 @@ F: include/exec/target_long.h
F: include/qemu/accel.h F: include/qemu/accel.h
F: include/system/accel-*.h F: include/system/accel-*.h
F: include/system/cpus.h F: include/system/cpus.h
F: include/accel/accel-cpu-target.h F: include/accel/accel-cpu*.h
F: accel/accel-*.c F: accel/accel-*.?
F: accel/Makefile.objs F: accel/Makefile.objs
F: accel/stubs/Makefile.objs F: accel/stubs/Makefile.objs
F: cpu-common.c F: cpu-common.c
@ -1581,7 +1581,7 @@ F: hw/pci-host/ppc440_pcix.c
F: hw/display/sm501* F: hw/display/sm501*
F: hw/ide/sii3112.c F: hw/ide/sii3112.c
F: hw/rtc/m41t80.c F: hw/rtc/m41t80.c
F: pc-bios/canyonlands.dt[sb] F: pc-bios/dtb/canyonlands.dt[sb]
F: pc-bios/u-boot-sam460ex-20100605.bin F: pc-bios/u-boot-sam460ex-20100605.bin
F: roms/u-boot-sam460ex F: roms/u-boot-sam460ex
F: docs/system/ppc/amigang.rst F: docs/system/ppc/amigang.rst
@ -1926,6 +1926,13 @@ F: tests/functional/test_empty_cpu_model.py
F: tests/unit/test-smp-parse.c F: tests/unit/test-smp-parse.c
T: git https://gitlab.com/ehabkost/qemu.git machine-next T: git https://gitlab.com/ehabkost/qemu.git machine-next
TargetInfo API
M: Pierrick Bouvier <pierrick.bouvier@linaro.org>
M: Philippe Mathieu-Daudé <philmd@linaro.org>
S: Supported
F: include/qemu/target-info*.h
F: target-info*.c
Xtensa Machines Xtensa Machines
--------------- ---------------
sim sim

142
accel/accel-common.c Normal file
View file

@ -0,0 +1,142 @@
/*
* QEMU accel class, components common to system emulation and user mode
*
* Copyright (c) 2003-2008 Fabrice Bellard
* Copyright (c) 2014 Red Hat Inc.
*
* SPDX-License-Identifier: MIT
*/
#include "qemu/osdep.h"
#include "qemu/accel.h"
#include "qemu/target-info.h"
#include "accel/accel-cpu.h"
#include "accel-internal.h"
/* Lookup AccelClass from opt_name. Returns NULL if not found */
AccelClass *accel_find(const char *opt_name)
{
char *class_name = g_strdup_printf(ACCEL_CLASS_NAME("%s"), opt_name);
AccelClass *ac = ACCEL_CLASS(module_object_class_by_name(class_name));
g_free(class_name);
return ac;
}
/* Return the name of the current accelerator */
const char *current_accel_name(void)
{
AccelClass *ac = ACCEL_GET_CLASS(current_accel());
return ac->name;
}
static void accel_init_cpu_int_aux(ObjectClass *klass, void *opaque)
{
CPUClass *cc = CPU_CLASS(klass);
AccelCPUClass *accel_cpu = opaque;
/*
* The first callback allows accel-cpu to run initializations
* for the CPU, customizing CPU behavior according to the accelerator.
*
* The second one allows the CPU to customize the accel-cpu
* behavior according to the CPU.
*
* The second is currently only used by TCG, to specialize the
* TCGCPUOps depending on the CPU type.
*/
cc->accel_cpu = accel_cpu;
if (accel_cpu->cpu_class_init) {
accel_cpu->cpu_class_init(cc);
}
if (cc->init_accel_cpu) {
cc->init_accel_cpu(accel_cpu, cc);
}
}
/* initialize the arch-specific accel CpuClass interfaces */
static void accel_init_cpu_interfaces(AccelClass *ac)
{
const char *ac_name; /* AccelClass name */
char *acc_name; /* AccelCPUClass name */
ObjectClass *acc; /* AccelCPUClass */
const char *cpu_resolving_type = target_cpu_type();
ac_name = object_class_get_name(OBJECT_CLASS(ac));
g_assert(ac_name != NULL);
acc_name = g_strdup_printf("%s-%s", ac_name, cpu_resolving_type);
acc = object_class_by_name(acc_name);
g_free(acc_name);
if (acc) {
object_class_foreach(accel_init_cpu_int_aux,
cpu_resolving_type, false, acc);
}
}
void accel_init_interfaces(AccelClass *ac)
{
accel_init_ops_interfaces(ac);
accel_init_cpu_interfaces(ac);
}
void accel_cpu_instance_init(CPUState *cpu)
{
if (cpu->cc->accel_cpu && cpu->cc->accel_cpu->cpu_instance_init) {
cpu->cc->accel_cpu->cpu_instance_init(cpu);
}
}
bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
{
AccelState *accel = current_accel();
AccelClass *acc = ACCEL_GET_CLASS(accel);
/* target specific realization */
if (cpu->cc->accel_cpu
&& cpu->cc->accel_cpu->cpu_target_realize
&& !cpu->cc->accel_cpu->cpu_target_realize(cpu, errp)) {
return false;
}
/* generic realization */
if (acc->cpu_common_realize && !acc->cpu_common_realize(cpu, errp)) {
return false;
}
return true;
}
void accel_cpu_common_unrealize(CPUState *cpu)
{
AccelState *accel = current_accel();
AccelClass *acc = ACCEL_GET_CLASS(accel);
/* generic unrealization */
if (acc->cpu_common_unrealize) {
acc->cpu_common_unrealize(cpu);
}
}
int accel_supported_gdbstub_sstep_flags(void)
{
AccelState *accel = current_accel();
AccelClass *acc = ACCEL_GET_CLASS(accel);
if (acc->gdbstub_supported_sstep_flags) {
return acc->gdbstub_supported_sstep_flags();
}
return 0;
}
static const TypeInfo accel_types[] = {
{
.name = TYPE_ACCEL,
.parent = TYPE_OBJECT,
.class_size = sizeof(AccelClass),
.instance_size = sizeof(AccelState),
.abstract = true,
},
};
DEFINE_TYPES(accel_types)

View file

@ -1,5 +1,5 @@
/* /*
* QEMU System Emulation accel internal functions * QEMU accel internal functions
* *
* Copyright 2021 SUSE LLC * Copyright 2021 SUSE LLC
* *
@ -7,9 +7,11 @@
* See the COPYING file in the top-level directory. * See the COPYING file in the top-level directory.
*/ */
#ifndef ACCEL_SYSTEM_H #ifndef ACCEL_INTERNAL_H
#define ACCEL_SYSTEM_H #define ACCEL_INTERNAL_H
void accel_system_init_ops_interfaces(AccelClass *ac); #include "qemu/accel.h"
void accel_init_ops_interfaces(AccelClass *ac);
#endif /* ACCEL_SYSTEM_H */ #endif /* ACCEL_SYSTEM_H */

View file

@ -29,7 +29,7 @@
#include "system/accel-ops.h" #include "system/accel-ops.h"
#include "system/cpus.h" #include "system/cpus.h"
#include "qemu/error-report.h" #include "qemu/error-report.h"
#include "accel-system.h" #include "accel-internal.h"
int accel_init_machine(AccelState *accel, MachineState *ms) int accel_init_machine(AccelState *accel, MachineState *ms)
{ {
@ -63,7 +63,7 @@ void accel_setup_post(MachineState *ms)
} }
/* initialize the arch-independent accel operation interfaces */ /* initialize the arch-independent accel operation interfaces */
void accel_system_init_ops_interfaces(AccelClass *ac) void accel_init_ops_interfaces(AccelClass *ac)
{ {
const char *ac_name; const char *ac_name;
char *ops_name; char *ops_name;

View file

@ -24,141 +24,8 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "qemu/accel.h"
#include "cpu.h"
#include "accel/accel-cpu-target.h" #include "accel/accel-cpu-target.h"
#ifndef CONFIG_USER_ONLY
#include "accel-system.h"
#endif /* !CONFIG_USER_ONLY */
static const TypeInfo accel_type = {
.name = TYPE_ACCEL,
.parent = TYPE_OBJECT,
.class_size = sizeof(AccelClass),
.instance_size = sizeof(AccelState),
.abstract = true,
};
/* Lookup AccelClass from opt_name. Returns NULL if not found */
AccelClass *accel_find(const char *opt_name)
{
char *class_name = g_strdup_printf(ACCEL_CLASS_NAME("%s"), opt_name);
AccelClass *ac = ACCEL_CLASS(module_object_class_by_name(class_name));
g_free(class_name);
return ac;
}
/* Return the name of the current accelerator */
const char *current_accel_name(void)
{
AccelClass *ac = ACCEL_GET_CLASS(current_accel());
return ac->name;
}
static void accel_init_cpu_int_aux(ObjectClass *klass, void *opaque)
{
CPUClass *cc = CPU_CLASS(klass);
AccelCPUClass *accel_cpu = opaque;
/*
* The first callback allows accel-cpu to run initializations
* for the CPU, customizing CPU behavior according to the accelerator.
*
* The second one allows the CPU to customize the accel-cpu
* behavior according to the CPU.
*
* The second is currently only used by TCG, to specialize the
* TCGCPUOps depending on the CPU type.
*/
cc->accel_cpu = accel_cpu;
if (accel_cpu->cpu_class_init) {
accel_cpu->cpu_class_init(cc);
}
if (cc->init_accel_cpu) {
cc->init_accel_cpu(accel_cpu, cc);
}
}
/* initialize the arch-specific accel CpuClass interfaces */
static void accel_init_cpu_interfaces(AccelClass *ac)
{
const char *ac_name; /* AccelClass name */
char *acc_name; /* AccelCPUClass name */
ObjectClass *acc; /* AccelCPUClass */
ac_name = object_class_get_name(OBJECT_CLASS(ac));
g_assert(ac_name != NULL);
acc_name = g_strdup_printf("%s-%s", ac_name, CPU_RESOLVING_TYPE);
acc = object_class_by_name(acc_name);
g_free(acc_name);
if (acc) {
object_class_foreach(accel_init_cpu_int_aux,
CPU_RESOLVING_TYPE, false, acc);
}
}
void accel_init_interfaces(AccelClass *ac)
{
#ifndef CONFIG_USER_ONLY
accel_system_init_ops_interfaces(ac);
#endif /* !CONFIG_USER_ONLY */
accel_init_cpu_interfaces(ac);
}
void accel_cpu_instance_init(CPUState *cpu)
{
if (cpu->cc->accel_cpu && cpu->cc->accel_cpu->cpu_instance_init) {
cpu->cc->accel_cpu->cpu_instance_init(cpu);
}
}
bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
{
AccelState *accel = current_accel();
AccelClass *acc = ACCEL_GET_CLASS(accel);
/* target specific realization */
if (cpu->cc->accel_cpu
&& cpu->cc->accel_cpu->cpu_target_realize
&& !cpu->cc->accel_cpu->cpu_target_realize(cpu, errp)) {
return false;
}
/* generic realization */
if (acc->cpu_common_realize && !acc->cpu_common_realize(cpu, errp)) {
return false;
}
return true;
}
void accel_cpu_common_unrealize(CPUState *cpu)
{
AccelState *accel = current_accel();
AccelClass *acc = ACCEL_GET_CLASS(accel);
/* generic unrealization */
if (acc->cpu_common_unrealize) {
acc->cpu_common_unrealize(cpu);
}
}
int accel_supported_gdbstub_sstep_flags(void)
{
AccelState *accel = current_accel();
AccelClass *acc = ACCEL_GET_CLASS(accel);
if (acc->gdbstub_supported_sstep_flags) {
return acc->gdbstub_supported_sstep_flags();
}
return 0;
}
static const TypeInfo accel_cpu_type = { static const TypeInfo accel_cpu_type = {
.name = TYPE_ACCEL_CPU, .name = TYPE_ACCEL_CPU,
.parent = TYPE_OBJECT, .parent = TYPE_OBJECT,
@ -168,7 +35,6 @@ static const TypeInfo accel_cpu_type = {
static void register_accel_types(void) static void register_accel_types(void)
{ {
type_register_static(&accel_type);
type_register_static(&accel_cpu_type); type_register_static(&accel_cpu_type);
} }

View file

@ -9,6 +9,12 @@
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "qemu/accel.h" #include "qemu/accel.h"
#include "accel-internal.h"
void accel_init_ops_interfaces(AccelClass *ac)
{
/* nothing */
}
AccelState *current_accel(void) AccelState *current_accel(void)
{ {

View file

@ -355,7 +355,7 @@ static inline int hvf_gdbstub_sstep_flags(void)
return SSTEP_ENABLE | SSTEP_NOIRQ; return SSTEP_ENABLE | SSTEP_NOIRQ;
} }
static void hvf_accel_class_init(ObjectClass *oc, void *data) static void hvf_accel_class_init(ObjectClass *oc, const void *data)
{ {
AccelClass *ac = ACCEL_CLASS(oc); AccelClass *ac = ACCEL_CLASS(oc);
ac->name = "HVF"; ac->name = "HVF";
@ -578,7 +578,7 @@ static void hvf_remove_all_breakpoints(CPUState *cpu)
} }
} }
static void hvf_accel_ops_class_init(ObjectClass *oc, void *data) static void hvf_accel_ops_class_init(ObjectClass *oc, const void *data)
{ {
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);

View file

@ -90,7 +90,7 @@ static int kvm_update_guest_debug_ops(CPUState *cpu)
} }
#endif #endif
static void kvm_accel_ops_class_init(ObjectClass *oc, void *data) static void kvm_accel_ops_class_init(ObjectClass *oc, const void *data)
{ {
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);

View file

@ -33,6 +33,7 @@
#include "system/cpus.h" #include "system/cpus.h"
#include "system/accel-blocker.h" #include "system/accel-blocker.h"
#include "qemu/bswap.h" #include "qemu/bswap.h"
#include "exec/tswap.h"
#include "system/memory.h" #include "system/memory.h"
#include "system/ram_addr.h" #include "system/ram_addr.h"
#include "qemu/event_notifier.h" #include "qemu/event_notifier.h"
@ -1318,21 +1319,22 @@ bool kvm_hwpoisoned_mem(void)
static uint32_t adjust_ioeventfd_endianness(uint32_t val, uint32_t size) static uint32_t adjust_ioeventfd_endianness(uint32_t val, uint32_t size)
{ {
#if HOST_BIG_ENDIAN != TARGET_BIG_ENDIAN if (target_needs_bswap()) {
/* The kernel expects ioeventfd values in HOST_BIG_ENDIAN /*
* endianness, but the memory core hands them in target endianness. * The kernel expects ioeventfd values in HOST_BIG_ENDIAN
* For example, PPC is always treated as big-endian even if running * endianness, but the memory core hands them in target endianness.
* on KVM and on PPC64LE. Correct here. * For example, PPC is always treated as big-endian even if running
*/ * on KVM and on PPC64LE. Correct here, swapping back.
switch (size) { */
case 2: switch (size) {
val = bswap16(val); case 2:
break; val = bswap16(val);
case 4: break;
val = bswap32(val); case 4:
break; val = bswap32(val);
break;
}
} }
#endif
return val; return val;
} }
@ -3964,7 +3966,7 @@ static int kvm_gdbstub_sstep_flags(void)
return kvm_sstep_flags; return kvm_sstep_flags;
} }
static void kvm_accel_class_init(ObjectClass *oc, void *data) static void kvm_accel_class_init(ObjectClass *oc, const void *data)
{ {
AccelClass *ac = ACCEL_CLASS(oc); AccelClass *ac = ACCEL_CLASS(oc);
ac->name = "KVM"; ac->name = "KVM";

View file

@ -1,3 +1,4 @@
common_ss.add(files('accel-common.c'))
specific_ss.add(files('accel-target.c')) specific_ss.add(files('accel-target.c'))
system_ss.add(files('accel-system.c', 'accel-blocker.c')) system_ss.add(files('accel-system.c', 'accel-blocker.c'))
user_ss.add(files('accel-user.c')) user_ss.add(files('accel-user.c'))

View file

@ -42,7 +42,7 @@ static int qtest_init_accel(MachineState *ms)
return 0; return 0;
} }
static void qtest_accel_class_init(ObjectClass *oc, void *data) static void qtest_accel_class_init(ObjectClass *oc, const void *data)
{ {
AccelClass *ac = ACCEL_CLASS(oc); AccelClass *ac = ACCEL_CLASS(oc);
ac->name = "QTest"; ac->name = "QTest";
@ -59,7 +59,7 @@ static const TypeInfo qtest_accel_type = {
}; };
module_obj(TYPE_QTEST_ACCEL); module_obj(TYPE_QTEST_ACCEL);
static void qtest_accel_ops_class_init(ObjectClass *oc, void *data) static void qtest_accel_ops_class_init(ObjectClass *oc, const void *data)
{ {
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);

View file

@ -11,8 +11,7 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "exec/tb-flush.h" #include "exec/cpu-common.h"
#include "exec/exec-all.h"
G_NORETURN void cpu_loop_exit(CPUState *cpu) G_NORETURN void cpu_loop_exit(CPUState *cpu)
{ {

View file

@ -224,7 +224,7 @@ static void tcg_accel_ops_init(AccelOpsClass *ops)
ops->remove_all_breakpoints = tcg_remove_all_breakpoints; ops->remove_all_breakpoints = tcg_remove_all_breakpoints;
} }
static void tcg_accel_ops_class_init(ObjectClass *oc, void *data) static void tcg_accel_ops_class_init(ObjectClass *oc, const void *data)
{ {
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);

View file

@ -35,6 +35,7 @@
#include "qapi/qapi-types-common.h" #include "qapi/qapi-types-common.h"
#include "qapi/qapi-builtin-visit.h" #include "qapi/qapi-builtin-visit.h"
#include "qemu/units.h" #include "qemu/units.h"
#include "qemu/target-info.h"
#if defined(CONFIG_USER_ONLY) #if defined(CONFIG_USER_ONLY)
#include "hw/qdev-core.h" #include "hw/qdev-core.h"
#else #else
@ -43,7 +44,7 @@
#endif #endif
#include "accel/tcg/cpu-ops.h" #include "accel/tcg/cpu-ops.h"
#include "internal-common.h" #include "internal-common.h"
#include "cpu.h" #include "cpu-param.h"
struct TCGState { struct TCGState {
@ -89,7 +90,7 @@ static int tcg_init_machine(MachineState *ms)
unsigned max_threads = 1; unsigned max_threads = 1;
#ifndef CONFIG_USER_ONLY #ifndef CONFIG_USER_ONLY
CPUClass *cc = CPU_CLASS(object_class_by_name(CPU_RESOLVING_TYPE)); CPUClass *cc = CPU_CLASS(object_class_by_name(target_cpu_type()));
bool mttcg_supported = cc->tcg_ops->mttcg_supported; bool mttcg_supported = cc->tcg_ops->mttcg_supported;
switch (s->mttcg_enabled) { switch (s->mttcg_enabled) {
@ -237,7 +238,7 @@ static int tcg_gdbstub_supported_sstep_flags(void)
} }
} }
static void tcg_accel_class_init(ObjectClass *oc, void *data) static void tcg_accel_class_init(ObjectClass *oc, const void *data)
{ {
AccelClass *ac = ACCEL_CLASS(oc); AccelClass *ac = ACCEL_CLASS(oc);
ac->name = "tcg"; ac->name = "tcg";

View file

@ -116,7 +116,7 @@ static int xen_init(MachineState *ms)
return 0; return 0;
} }
static void xen_accel_class_init(ObjectClass *oc, void *data) static void xen_accel_class_init(ObjectClass *oc, const void *data)
{ {
AccelClass *ac = ACCEL_CLASS(oc); AccelClass *ac = ACCEL_CLASS(oc);
static GlobalProperty compat[] = { static GlobalProperty compat[] = {
@ -147,7 +147,7 @@ static const TypeInfo xen_accel_type = {
.class_init = xen_accel_class_init, .class_init = xen_accel_class_init,
}; };
static void xen_accel_ops_class_init(ObjectClass *oc, void *data) static void xen_accel_ops_class_init(ObjectClass *oc, const void *data)
{ {
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);

View file

@ -116,7 +116,7 @@ qauthz_list_finalize(Object *obj)
static void static void
qauthz_list_class_init(ObjectClass *oc, void *data) qauthz_list_class_init(ObjectClass *oc, const void *data)
{ {
QAuthZClass *authz = QAUTHZ_CLASS(oc); QAuthZClass *authz = QAUTHZ_CLASS(oc);
@ -253,7 +253,7 @@ static const TypeInfo qauthz_list_info = {
.instance_size = sizeof(QAuthZList), .instance_size = sizeof(QAuthZList),
.instance_finalize = qauthz_list_finalize, .instance_finalize = qauthz_list_finalize,
.class_init = qauthz_list_class_init, .class_init = qauthz_list_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -220,7 +220,7 @@ qauthz_list_file_finalize(Object *obj)
static void static void
qauthz_list_file_class_init(ObjectClass *oc, void *data) qauthz_list_file_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
QAuthZClass *authz = QAUTHZ_CLASS(oc); QAuthZClass *authz = QAUTHZ_CLASS(oc);
@ -272,7 +272,7 @@ static const TypeInfo qauthz_list_file_info = {
.instance_size = sizeof(QAuthZListFile), .instance_size = sizeof(QAuthZListFile),
.instance_finalize = qauthz_list_file_finalize, .instance_finalize = qauthz_list_file_finalize,
.class_init = qauthz_list_file_class_init, .class_init = qauthz_list_file_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -103,7 +103,7 @@ qauthz_pam_finalize(Object *obj)
static void static void
qauthz_pam_class_init(ObjectClass *oc, void *data) qauthz_pam_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
QAuthZClass *authz = QAUTHZ_CLASS(oc); QAuthZClass *authz = QAUTHZ_CLASS(oc);
@ -136,7 +136,7 @@ static const TypeInfo qauthz_pam_info = {
.instance_size = sizeof(QAuthZPAM), .instance_size = sizeof(QAuthZPAM),
.instance_finalize = qauthz_pam_finalize, .instance_finalize = qauthz_pam_finalize,
.class_init = qauthz_pam_class_init, .class_init = qauthz_pam_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -78,7 +78,7 @@ qauthz_simple_complete(UserCreatable *uc, Error **errp)
static void static void
qauthz_simple_class_init(ObjectClass *oc, void *data) qauthz_simple_class_init(ObjectClass *oc, const void *data)
{ {
QAuthZClass *authz = QAUTHZ_CLASS(oc); QAuthZClass *authz = QAUTHZ_CLASS(oc);
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -111,7 +111,7 @@ static const TypeInfo qauthz_simple_info = {
.instance_size = sizeof(QAuthZSimple), .instance_size = sizeof(QAuthZSimple),
.instance_finalize = qauthz_simple_finalize, .instance_finalize = qauthz_simple_finalize,
.class_init = qauthz_simple_class_init, .class_init = qauthz_simple_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -20,7 +20,8 @@ OBJECT_DEFINE_ABSTRACT_TYPE(ConfidentialGuestSupport,
CONFIDENTIAL_GUEST_SUPPORT, CONFIDENTIAL_GUEST_SUPPORT,
OBJECT) OBJECT)
static void confidential_guest_support_class_init(ObjectClass *oc, void *data) static void confidential_guest_support_class_init(ObjectClass *oc,
const void *data)
{ {
} }

View file

@ -608,7 +608,7 @@ static void cryptodev_builtin_cleanup(
} }
static void static void
cryptodev_builtin_class_init(ObjectClass *oc, void *data) cryptodev_builtin_class_init(ObjectClass *oc, const void *data)
{ {
CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_CLASS(oc); CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_CLASS(oc);

View file

@ -619,7 +619,7 @@ static int cryptodev_lkcf_close_session(CryptoDevBackend *backend,
return 0; return 0;
} }
static void cryptodev_lkcf_class_init(ObjectClass *oc, void *data) static void cryptodev_lkcf_class_init(ObjectClass *oc, const void *data)
{ {
CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_CLASS(oc); CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_CLASS(oc);

View file

@ -393,7 +393,7 @@ static void cryptodev_vhost_user_finalize(Object *obj)
} }
static void static void
cryptodev_vhost_user_class_init(ObjectClass *oc, void *data) cryptodev_vhost_user_class_init(ObjectClass *oc, const void *data)
{ {
CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_CLASS(oc); CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_CLASS(oc);

View file

@ -608,7 +608,7 @@ static void cryptodev_backend_schemas_cb(StatsSchemaList **result,
} }
static void static void
cryptodev_backend_class_init(ObjectClass *oc, void *data) cryptodev_backend_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -641,7 +641,7 @@ static const TypeInfo cryptodev_backend_info = {
.instance_finalize = cryptodev_backend_finalize, .instance_finalize = cryptodev_backend_finalize,
.class_size = sizeof(CryptoDevBackendClass), .class_size = sizeof(CryptoDevBackendClass),
.class_init = cryptodev_backend_class_init, .class_init = cryptodev_backend_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -485,7 +485,7 @@ dbus_vmstate_get_id(VMStateIf *vmif)
} }
static void static void
dbus_vmstate_class_init(ObjectClass *oc, void *data) dbus_vmstate_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
VMStateIfClass *vc = VMSTATE_IF_CLASS(oc); VMStateIfClass *vc = VMSTATE_IF_CLASS(oc);
@ -505,7 +505,7 @@ static const TypeInfo dbus_vmstate_info = {
.instance_size = sizeof(DBusVMState), .instance_size = sizeof(DBusVMState),
.instance_finalize = dbus_vmstate_finalize, .instance_finalize = dbus_vmstate_finalize,
.class_init = dbus_vmstate_class_init, .class_init = dbus_vmstate_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ TYPE_VMSTATE_IF }, { TYPE_VMSTATE_IF },
{ } { }

View file

@ -17,7 +17,7 @@ OBJECT_DEFINE_ABSTRACT_TYPE(HostIOMMUDevice,
HOST_IOMMU_DEVICE, HOST_IOMMU_DEVICE,
OBJECT) OBJECT)
static void host_iommu_device_class_init(ObjectClass *oc, void *data) static void host_iommu_device_class_init(ObjectClass *oc, const void *data)
{ {
} }

View file

@ -50,7 +50,7 @@ static void sgx_epc_backend_instance_init(Object *obj)
m->dump = false; m->dump = false;
} }
static void sgx_epc_backend_class_init(ObjectClass *oc, void *data) static void sgx_epc_backend_class_init(ObjectClass *oc, const void *data)
{ {
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc); HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);

View file

@ -270,7 +270,7 @@ static void file_backend_unparent(Object *obj)
} }
static void static void
file_backend_class_init(ObjectClass *oc, void *data) file_backend_class_init(ObjectClass *oc, const void *data)
{ {
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc); HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);

View file

@ -133,7 +133,7 @@ memfd_backend_instance_init(Object *obj)
} }
static void static void
memfd_backend_class_init(ObjectClass *oc, void *data) memfd_backend_class_init(ObjectClass *oc, const void *data)
{ {
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc); HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);

View file

@ -37,7 +37,7 @@ ram_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
} }
static void static void
ram_backend_class_init(ObjectClass *oc, void *data) ram_backend_class_init(ObjectClass *oc, const void *data)
{ {
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc); HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);

View file

@ -69,7 +69,7 @@ shm_backend_instance_init(Object *obj)
} }
static void static void
shm_backend_class_init(ObjectClass *oc, void *data) shm_backend_class_init(ObjectClass *oc, const void *data)
{ {
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc); HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);

View file

@ -501,7 +501,7 @@ host_memory_backend_set_use_canonical_path(Object *obj, bool value,
} }
static void static void
host_memory_backend_class_init(ObjectClass *oc, void *data) host_memory_backend_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -586,7 +586,7 @@ static const TypeInfo host_memory_backend_info = {
.instance_size = sizeof(HostMemoryBackend), .instance_size = sizeof(HostMemoryBackend),
.instance_init = host_memory_backend_init, .instance_init = host_memory_backend_init,
.instance_post_init = host_memory_backend_post_init, .instance_post_init = host_memory_backend_post_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -64,7 +64,7 @@ static bool iommufd_backend_can_be_deleted(UserCreatable *uc)
return !be->users; return !be->users;
} }
static void iommufd_backend_class_init(ObjectClass *oc, void *data) static void iommufd_backend_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -326,7 +326,7 @@ static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod, int cap, Error **errp)
} }
} }
static void hiod_iommufd_class_init(ObjectClass *oc, void *data) static void hiod_iommufd_class_init(ObjectClass *oc, const void *data)
{ {
HostIOMMUDeviceClass *hioc = HOST_IOMMU_DEVICE_CLASS(oc); HostIOMMUDeviceClass *hioc = HOST_IOMMU_DEVICE_CLASS(oc);
@ -342,7 +342,7 @@ static const TypeInfo types[] = {
.instance_finalize = iommufd_backend_finalize, .instance_finalize = iommufd_backend_finalize,
.class_size = sizeof(IOMMUFDBackendClass), .class_size = sizeof(IOMMUFDBackendClass),
.class_init = iommufd_backend_class_init, .class_init = iommufd_backend_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -55,7 +55,7 @@ static void rng_builtin_finalize(Object *obj)
qemu_bh_delete(s->bh); qemu_bh_delete(s->bh);
} }
static void rng_builtin_class_init(ObjectClass *klass, void *data) static void rng_builtin_class_init(ObjectClass *klass, const void *data)
{ {
RngBackendClass *rbc = RNG_BACKEND_CLASS(klass); RngBackendClass *rbc = RNG_BACKEND_CLASS(klass);

View file

@ -143,7 +143,7 @@ static void rng_egd_finalize(Object *obj)
g_free(s->chr_name); g_free(s->chr_name);
} }
static void rng_egd_class_init(ObjectClass *klass, void *data) static void rng_egd_class_init(ObjectClass *klass, const void *data)
{ {
RngBackendClass *rbc = RNG_BACKEND_CLASS(klass); RngBackendClass *rbc = RNG_BACKEND_CLASS(klass);

View file

@ -121,7 +121,7 @@ static void rng_random_finalize(Object *obj)
g_free(s->filename); g_free(s->filename);
} }
static void rng_random_class_init(ObjectClass *klass, void *data) static void rng_random_class_init(ObjectClass *klass, const void *data)
{ {
RngBackendClass *rbc = RNG_BACKEND_CLASS(klass); RngBackendClass *rbc = RNG_BACKEND_CLASS(klass);

View file

@ -99,7 +99,7 @@ static void rng_backend_finalize(Object *obj)
rng_backend_free_requests(s); rng_backend_free_requests(s);
} }
static void rng_backend_class_init(ObjectClass *oc, void *data) static void rng_backend_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -119,7 +119,7 @@ static const TypeInfo rng_backend_info = {
.class_size = sizeof(RngBackendClass), .class_size = sizeof(RngBackendClass),
.class_init = rng_backend_class_init, .class_init = rng_backend_class_init,
.abstract = true, .abstract = true,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -1056,7 +1056,7 @@ static void tpm_emulator_inst_finalize(Object *obj)
vmstate_unregister(NULL, &vmstate_tpm_emulator, obj); vmstate_unregister(NULL, &vmstate_tpm_emulator, obj);
} }
static void tpm_emulator_class_init(ObjectClass *klass, void *data) static void tpm_emulator_class_init(ObjectClass *klass, const void *data)
{ {
TPMBackendClass *tbc = TPM_BACKEND_CLASS(klass); TPMBackendClass *tbc = TPM_BACKEND_CLASS(klass);

View file

@ -364,7 +364,7 @@ static void tpm_passthrough_inst_finalize(Object *obj)
qapi_free_TPMPassthroughOptions(tpm_pt->options); qapi_free_TPMPassthroughOptions(tpm_pt->options);
} }
static void tpm_passthrough_class_init(ObjectClass *klass, void *data) static void tpm_passthrough_class_init(ObjectClass *klass, const void *data)
{ {
TPMBackendClass *tbc = TPM_BACKEND_CLASS(klass); TPMBackendClass *tbc = TPM_BACKEND_CLASS(klass);

View file

@ -163,7 +163,7 @@ static char *get_chardev(Object *obj, Error **errp)
return NULL; return NULL;
} }
static void vhost_user_backend_class_init(ObjectClass *oc, void *data) static void vhost_user_backend_class_init(ObjectClass *oc, const void *data)
{ {
object_class_property_add_str(oc, "chardev", get_chardev, set_chardev); object_class_property_add_str(oc, "chardev", get_chardev, set_chardev);
} }

View file

@ -933,7 +933,8 @@ static bool throttle_group_can_be_deleted(UserCreatable *uc)
return OBJECT(uc)->ref == 1; return OBJECT(uc)->ref == 1;
} }
static void throttle_group_obj_class_init(ObjectClass *klass, void *class_data) static void throttle_group_obj_class_init(ObjectClass *klass,
const void *class_data)
{ {
size_t i = 0; size_t i = 0;
UserCreatableClass *ucc = USER_CREATABLE_CLASS(klass); UserCreatableClass *ucc = USER_CREATABLE_CLASS(klass);
@ -966,7 +967,7 @@ static const TypeInfo throttle_group_info = {
.instance_size = sizeof(ThrottleGroup), .instance_size = sizeof(ThrottleGroup),
.instance_init = throttle_group_obj_init, .instance_init = throttle_group_obj_init,
.instance_finalize = throttle_group_obj_finalize, .instance_finalize = throttle_group_obj_finalize,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
}, },

View file

@ -668,7 +668,7 @@ static void baum_chr_open(Chardev *chr,
qemu_set_fd_handler(baum->brlapi_fd, baum_chr_read, NULL, baum); qemu_set_fd_handler(baum->brlapi_fd, baum_chr_read, NULL, baum);
} }
static void char_braille_class_init(ObjectClass *oc, void *data) static void char_braille_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -34,7 +34,7 @@ static void qemu_chr_open_win_con(Chardev *chr,
win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true); win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true);
} }
static void char_console_class_init(ObjectClass *oc, void *data) static void char_console_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -238,7 +238,7 @@ void qemu_chr_open_fd(Chardev *chr,
} }
} }
static void char_fd_class_init(ObjectClass *oc, void *data) static void char_fd_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -123,7 +123,7 @@ static void qemu_chr_parse_file_out(QemuOpts *opts, ChardevBackend *backend,
file->append = qemu_opt_get_bool(opts, "append", false); file->append = qemu_opt_get_bool(opts, "append", false);
} }
static void char_file_class_init(ObjectClass *oc, void *data) static void char_file_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -272,7 +272,7 @@ static void qemu_chr_parse_hub(QemuOpts *opts, ChardevBackend *backend,
} }
} }
static void char_hub_class_init(ObjectClass *oc, void *data) static void char_hub_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -447,7 +447,7 @@ void resume_mux_open(void)
chardev_options_parsed_cb, NULL); chardev_options_parsed_cb, NULL);
} }
static void char_mux_class_init(ObjectClass *oc, void *data) static void char_mux_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -34,7 +34,7 @@ static void null_chr_open(Chardev *chr,
*be_opened = false; *be_opened = false;
} }
static void char_null_class_init(ObjectClass *oc, void *data) static void char_null_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -270,7 +270,7 @@ static void qemu_chr_parse_parallel(QemuOpts *opts, ChardevBackend *backend,
parallel->device = g_strdup(device); parallel->device = g_strdup(device);
} }
static void char_parallel_class_init(ObjectClass *oc, void *data) static void char_parallel_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -171,7 +171,7 @@ static void qemu_chr_parse_pipe(QemuOpts *opts, ChardevBackend *backend,
dev->device = g_strdup(device); dev->device = g_strdup(device);
} }
static void char_pipe_class_init(ObjectClass *oc, void *data) static void char_pipe_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -390,7 +390,7 @@ static void char_pty_parse(QemuOpts *opts, ChardevBackend *backend,
pty->path = g_strdup(path); pty->path = g_strdup(path);
} }
static void char_pty_class_init(ObjectClass *oc, void *data) static void char_pty_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -223,7 +223,7 @@ static void qemu_chr_parse_ringbuf(QemuOpts *opts, ChardevBackend *backend,
} }
} }
static void char_ringbuf_class_init(ObjectClass *oc, void *data) static void char_ringbuf_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -298,7 +298,7 @@ static void qemu_chr_parse_serial(QemuOpts *opts, ChardevBackend *backend,
serial->device = g_strdup(device); serial->device = g_strdup(device);
} }
static void char_serial_class_init(ObjectClass *oc, void *data) static void char_serial_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -1581,7 +1581,7 @@ char_socket_get_connected(Object *obj, Error **errp)
return s->state == TCP_CHARDEV_STATE_CONNECTED; return s->state == TCP_CHARDEV_STATE_CONNECTED;
} }
static void char_socket_class_init(ObjectClass *oc, void *data) static void char_socket_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -136,7 +136,7 @@ static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend,
stdio->signal = qemu_opt_get_bool(opts, "signal", true); stdio->signal = qemu_opt_get_bool(opts, "signal", true);
} }
static void char_stdio_class_init(ObjectClass *oc, void *data) static void char_stdio_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -219,7 +219,7 @@ static void qmp_chardev_open_udp(Chardev *chr,
*be_opened = false; *be_opened = false;
} }
static void char_udp_class_init(ObjectClass *oc, void *data) static void char_udp_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -256,7 +256,7 @@ static int win_stdio_write(Chardev *chr, const uint8_t *buf, int len)
return len - len1; return len - len1;
} }
static void char_win_stdio_class_init(ObjectClass *oc, void *data) static void char_win_stdio_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -220,7 +220,7 @@ void win_chr_set_file(Chardev *chr, HANDLE file, bool keep_open)
s->file = file; s->file = file;
} }
static void char_win_class_init(ObjectClass *oc, void *data) static void char_win_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -295,7 +295,7 @@ static int null_chr_write(Chardev *chr, const uint8_t *buf, int len)
return len; return len;
} }
static void char_class_init(ObjectClass *oc, void *data) static void char_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -267,7 +267,7 @@ static void msmouse_chr_open(Chardev *chr,
fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ); fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ);
} }
static void char_msmouse_class_init(ObjectClass *oc, void *data) static void char_msmouse_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -347,7 +347,7 @@ static void qemu_chr_parse_spice_port(QemuOpts *opts, ChardevBackend *backend,
spiceport->fqdn = g_strdup(name); spiceport->fqdn = g_strdup(name);
} }
static void char_spice_class_init(ObjectClass *oc, void *data) static void char_spice_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);
@ -366,7 +366,7 @@ static const TypeInfo char_spice_type_info = {
}; };
module_obj(TYPE_CHARDEV_SPICE); module_obj(TYPE_CHARDEV_SPICE);
static void char_spicevmc_class_init(ObjectClass *oc, void *data) static void char_spicevmc_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);
@ -382,7 +382,7 @@ static const TypeInfo char_spicevmc_type_info = {
}; };
module_obj(TYPE_CHARDEV_SPICEVMC); module_obj(TYPE_CHARDEV_SPICEVMC);
static void char_spiceport_class_init(ObjectClass *oc, void *data) static void char_spiceport_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -110,7 +110,7 @@ static int testdev_chr_write(Chardev *chr, const uint8_t *buf, int len)
return orig_len; return orig_len;
} }
static void char_testdev_class_init(ObjectClass *oc, void *data) static void char_testdev_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -342,7 +342,7 @@ static void wctablet_chr_open(Chardev *chr,
&wctablet_handler); &wctablet_handler);
} }
static void wctablet_chr_class_init(ObjectClass *oc, void *data) static void wctablet_chr_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -576,7 +576,7 @@ static void sum_stats(void)
} }
} }
static int dcmp(gconstpointer a, gconstpointer b) static int dcmp(gconstpointer a, gconstpointer b, gpointer d)
{ {
InsnData *insn_a = (InsnData *) a; InsnData *insn_a = (InsnData *) a;
InsnData *insn_b = (InsnData *) b; InsnData *insn_b = (InsnData *) b;
@ -584,7 +584,7 @@ static int dcmp(gconstpointer a, gconstpointer b)
return insn_a->l1_dmisses < insn_b->l1_dmisses ? 1 : -1; return insn_a->l1_dmisses < insn_b->l1_dmisses ? 1 : -1;
} }
static int icmp(gconstpointer a, gconstpointer b) static int icmp(gconstpointer a, gconstpointer b, gpointer d)
{ {
InsnData *insn_a = (InsnData *) a; InsnData *insn_a = (InsnData *) a;
InsnData *insn_b = (InsnData *) b; InsnData *insn_b = (InsnData *) b;
@ -592,7 +592,7 @@ static int icmp(gconstpointer a, gconstpointer b)
return insn_a->l1_imisses < insn_b->l1_imisses ? 1 : -1; return insn_a->l1_imisses < insn_b->l1_imisses ? 1 : -1;
} }
static int l2_cmp(gconstpointer a, gconstpointer b) static int l2_cmp(gconstpointer a, gconstpointer b, gpointer d)
{ {
InsnData *insn_a = (InsnData *) a; InsnData *insn_a = (InsnData *) a;
InsnData *insn_b = (InsnData *) b; InsnData *insn_b = (InsnData *) b;
@ -645,7 +645,7 @@ static void log_top_insns(void)
InsnData *insn; InsnData *insn;
miss_insns = g_hash_table_get_values(miss_ht); miss_insns = g_hash_table_get_values(miss_ht);
miss_insns = g_list_sort(miss_insns, dcmp); miss_insns = g_list_sort_with_data(miss_insns, dcmp, NULL);
g_autoptr(GString) rep = g_string_new(""); g_autoptr(GString) rep = g_string_new("");
g_string_append_printf(rep, "%s", "address, data misses, instruction\n"); g_string_append_printf(rep, "%s", "address, data misses, instruction\n");
@ -659,7 +659,7 @@ static void log_top_insns(void)
insn->l1_dmisses, insn->disas_str); insn->l1_dmisses, insn->disas_str);
} }
miss_insns = g_list_sort(miss_insns, icmp); miss_insns = g_list_sort_with_data(miss_insns, icmp, NULL);
g_string_append_printf(rep, "%s", "\naddress, fetch misses, instruction\n"); g_string_append_printf(rep, "%s", "\naddress, fetch misses, instruction\n");
for (curr = miss_insns, i = 0; curr && i < limit; i++, curr = curr->next) { for (curr = miss_insns, i = 0; curr && i < limit; i++, curr = curr->next) {
@ -676,7 +676,7 @@ static void log_top_insns(void)
goto finish; goto finish;
} }
miss_insns = g_list_sort(miss_insns, l2_cmp); miss_insns = g_list_sort_with_data(miss_insns, l2_cmp, NULL);
g_string_append_printf(rep, "%s", "\naddress, L2 misses, instruction\n"); g_string_append_printf(rep, "%s", "\naddress, L2 misses, instruction\n");
for (curr = miss_insns, i = 0; curr && i < limit; i++, curr = curr->next) { for (curr = miss_insns, i = 0; curr && i < limit; i++, curr = curr->next) {

View file

@ -98,7 +98,7 @@ static GHashTable *nodes;
struct qemu_plugin_scoreboard *state; struct qemu_plugin_scoreboard *state;
/* SORT_HOTTEST */ /* SORT_HOTTEST */
static gint hottest(gconstpointer a, gconstpointer b) static gint hottest(gconstpointer a, gconstpointer b, gpointer d)
{ {
NodeData *na = (NodeData *) a; NodeData *na = (NodeData *) a;
NodeData *nb = (NodeData *) b; NodeData *nb = (NodeData *) b;
@ -107,7 +107,7 @@ static gint hottest(gconstpointer a, gconstpointer b)
na->dest_count == nb->dest_count ? 0 : 1; na->dest_count == nb->dest_count ? 0 : 1;
} }
static gint exception(gconstpointer a, gconstpointer b) static gint exception(gconstpointer a, gconstpointer b, gpointer d)
{ {
NodeData *na = (NodeData *) a; NodeData *na = (NodeData *) a;
NodeData *nb = (NodeData *) b; NodeData *nb = (NodeData *) b;
@ -116,7 +116,7 @@ static gint exception(gconstpointer a, gconstpointer b)
na->early_exit == nb->early_exit ? 0 : 1; na->early_exit == nb->early_exit ? 0 : 1;
} }
static gint popular(gconstpointer a, gconstpointer b) static gint popular(gconstpointer a, gconstpointer b, gpointer d)
{ {
NodeData *na = (NodeData *) a; NodeData *na = (NodeData *) a;
NodeData *nb = (NodeData *) b; NodeData *nb = (NodeData *) b;
@ -138,7 +138,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
{ {
g_autoptr(GString) result = g_string_new("collected "); g_autoptr(GString) result = g_string_new("collected ");
GList *data; GList *data;
GCompareFunc sort = &hottest; GCompareDataFunc sort = &hottest;
int i = 0; int i = 0;
g_mutex_lock(&node_lock); g_mutex_lock(&node_lock);
@ -162,7 +162,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
break; break;
} }
data = g_list_sort(data, sort); data = g_list_sort_with_data(data, sort, NULL);
for (GList *l = data; for (GList *l = data;
l != NULL && i < topn; l != NULL && i < topn;

View file

@ -39,7 +39,7 @@ typedef struct {
unsigned long insns; unsigned long insns;
} ExecCount; } ExecCount;
static gint cmp_exec_count(gconstpointer a, gconstpointer b) static gint cmp_exec_count(gconstpointer a, gconstpointer b, gpointer d)
{ {
ExecCount *ea = (ExecCount *) a; ExecCount *ea = (ExecCount *) a;
ExecCount *eb = (ExecCount *) b; ExecCount *eb = (ExecCount *) b;
@ -79,7 +79,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
g_string_append_printf(report, "%d entries in the hash table\n", g_string_append_printf(report, "%d entries in the hash table\n",
g_hash_table_size(hotblocks)); g_hash_table_size(hotblocks));
counts = g_hash_table_get_values(hotblocks); counts = g_hash_table_get_values(hotblocks);
it = g_list_sort(counts, cmp_exec_count); it = g_list_sort_with_data(counts, cmp_exec_count, NULL);
if (it) { if (it) {
g_string_append_printf(report, "pc, tcount, icount, ecount\n"); g_string_append_printf(report, "pc, tcount, icount, ecount\n");

View file

@ -48,7 +48,7 @@ typedef struct {
static GMutex lock; static GMutex lock;
static GHashTable *pages; static GHashTable *pages;
static gint cmp_access_count(gconstpointer a, gconstpointer b) static gint cmp_access_count(gconstpointer a, gconstpointer b, gpointer d)
{ {
PageCounters *ea = (PageCounters *) a; PageCounters *ea = (PageCounters *) a;
PageCounters *eb = (PageCounters *) b; PageCounters *eb = (PageCounters *) b;
@ -83,7 +83,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
if (counts && g_list_next(counts)) { if (counts && g_list_next(counts)) {
GList *it; GList *it;
it = g_list_sort(counts, cmp_access_count); it = g_list_sort_with_data(counts, cmp_access_count, NULL);
for (i = 0; i < limit && it->next; i++, it = it->next) { for (i = 0; i < limit && it->next; i++, it = it->next) {
PageCounters *rec = (PageCounters *) it->data; PageCounters *rec = (PageCounters *) it->data;

View file

@ -155,7 +155,7 @@ static ClassSelector class_tables[] = {
static InsnClassExecCount *class_table; static InsnClassExecCount *class_table;
static int class_table_sz; static int class_table_sz;
static gint cmp_exec_count(gconstpointer a, gconstpointer b) static gint cmp_exec_count(gconstpointer a, gconstpointer b, gpointer d)
{ {
InsnExecCount *ea = (InsnExecCount *) a; InsnExecCount *ea = (InsnExecCount *) a;
InsnExecCount *eb = (InsnExecCount *) b; InsnExecCount *eb = (InsnExecCount *) b;
@ -208,7 +208,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
counts = g_hash_table_get_values(insns); counts = g_hash_table_get_values(insns);
if (counts && g_list_next(counts)) { if (counts && g_list_next(counts)) {
g_string_append_printf(report, "Individual Instructions:\n"); g_string_append_printf(report, "Individual Instructions:\n");
counts = g_list_sort(counts, cmp_exec_count); counts = g_list_sort_with_data(counts, cmp_exec_count, NULL);
for (i = 0; i < limit && g_list_next(counts); for (i = 0; i < limit && g_list_next(counts);
i++, counts = g_list_next(counts)) { i++, counts = g_list_next(counts)) {

View file

@ -71,7 +71,7 @@ static void plugin_init(void)
devices = g_hash_table_new(NULL, NULL); devices = g_hash_table_new(NULL, NULL);
} }
static gint sort_cmp(gconstpointer a, gconstpointer b) static gint sort_cmp(gconstpointer a, gconstpointer b, gpointer d)
{ {
DeviceCounts *ea = (DeviceCounts *) a; DeviceCounts *ea = (DeviceCounts *) a;
DeviceCounts *eb = (DeviceCounts *) b; DeviceCounts *eb = (DeviceCounts *) b;
@ -79,7 +79,7 @@ static gint sort_cmp(gconstpointer a, gconstpointer b)
eb->totals.reads + eb->totals.writes ? -1 : 1; eb->totals.reads + eb->totals.writes ? -1 : 1;
} }
static gint sort_loc(gconstpointer a, gconstpointer b) static gint sort_loc(gconstpointer a, gconstpointer b, gpointer d)
{ {
IOLocationCounts *ea = (IOLocationCounts *) a; IOLocationCounts *ea = (IOLocationCounts *) a;
IOLocationCounts *eb = (IOLocationCounts *) b; IOLocationCounts *eb = (IOLocationCounts *) b;
@ -126,13 +126,13 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
if (counts && g_list_next(counts)) { if (counts && g_list_next(counts)) {
GList *it; GList *it;
it = g_list_sort(counts, sort_cmp); it = g_list_sort_with_data(counts, sort_cmp, NULL);
while (it) { while (it) {
DeviceCounts *rec = (DeviceCounts *) it->data; DeviceCounts *rec = (DeviceCounts *) it->data;
if (rec->detail) { if (rec->detail) {
GList *accesses = g_hash_table_get_values(rec->detail); GList *accesses = g_hash_table_get_values(rec->detail);
GList *io_it = g_list_sort(accesses, sort_loc); GList *io_it = g_list_sort_with_data(accesses, sort_loc, NULL);
const char *prefix = pattern ? "off" : "pc"; const char *prefix = pattern ? "off" : "pc";
g_string_append_printf(report, "%s @ 0x%"PRIx64"\n", g_string_append_printf(report, "%s @ 0x%"PRIx64"\n",
rec->name, rec->base); rec->name, rec->base);

View file

@ -19,94 +19,19 @@
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "cpu.h" #include "cpu.h"
#include "qapi/error.h"
#include "qemu/error-report.h"
#include "qemu/qemu-print.h"
#include "system/accel-ops.h" #include "system/accel-ops.h"
#include "system/cpus.h" #include "system/cpus.h"
#include "exec/cpu-common.h" #include "exec/cpu-common.h"
#include "exec/tswap.h" #include "exec/tswap.h"
#include "exec/replay-core.h" #include "exec/replay-core.h"
#include "exec/log.h" #include "exec/log.h"
#include "accel/accel-cpu-target.h" #include "hw/core/cpu.h"
#include "trace/trace-root.h" #include "trace/trace-root.h"
/* Validate correct placement of CPUArchState. */ /* Validate correct placement of CPUArchState. */
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0); QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState)); QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
char *cpu_model_from_type(const char *typename)
{
const char *suffix = "-" CPU_RESOLVING_TYPE;
if (!object_class_by_name(typename)) {
return NULL;
}
if (g_str_has_suffix(typename, suffix)) {
return g_strndup(typename, strlen(typename) - strlen(suffix));
}
return g_strdup(typename);
}
const char *parse_cpu_option(const char *cpu_option)
{
ObjectClass *oc;
CPUClass *cc;
gchar **model_pieces;
const char *cpu_type;
model_pieces = g_strsplit(cpu_option, ",", 2);
if (!model_pieces[0]) {
error_report("-cpu option cannot be empty");
exit(1);
}
oc = cpu_class_by_name(CPU_RESOLVING_TYPE, model_pieces[0]);
if (oc == NULL) {
error_report("unable to find CPU model '%s'", model_pieces[0]);
g_strfreev(model_pieces);
exit(EXIT_FAILURE);
}
cpu_type = object_class_get_name(oc);
cc = CPU_CLASS(oc);
cc->parse_features(cpu_type, model_pieces[1], &error_fatal);
g_strfreev(model_pieces);
return cpu_type;
}
#ifndef cpu_list
static void cpu_list_entry(gpointer data, gpointer user_data)
{
CPUClass *cc = CPU_CLASS(OBJECT_CLASS(data));
const char *typename = object_class_get_name(OBJECT_CLASS(data));
g_autofree char *model = cpu_model_from_type(typename);
if (cc->deprecation_note) {
qemu_printf(" %s (deprecated)\n", model);
} else {
qemu_printf(" %s\n", model);
}
}
static void cpu_list(void)
{
GSList *list;
list = object_class_get_list_sorted(TYPE_CPU, false);
qemu_printf("Available CPUs:\n");
g_slist_foreach(list, cpu_list_entry, NULL);
g_slist_free(list);
}
#endif
void list_cpus(void)
{
cpu_list();
}
/* enable or disable single step mode. EXCP_DEBUG is returned by the /* enable or disable single step mode. EXCP_DEBUG is returned by the
CPU loop after each instruction */ CPU loop after each instruction */
void cpu_single_step(CPUState *cpu, int enabled) void cpu_single_step(CPUState *cpu, int enabled)
@ -161,13 +86,8 @@ void cpu_abort(CPUState *cpu, const char *fmt, ...)
abort(); abort();
} }
#undef target_words_bigendian #undef target_big_endian
bool target_words_bigendian(void) bool target_big_endian(void)
{ {
return TARGET_BIG_ENDIAN; return TARGET_BIG_ENDIAN;
} }
const char *target_name(void)
{
return TARGET_NAME;
}

View file

@ -117,7 +117,7 @@ qcrypto_secret_finalize(Object *obj)
} }
static void static void
qcrypto_secret_class_init(ObjectClass *oc, void *data) qcrypto_secret_class_init(ObjectClass *oc, const void *data)
{ {
QCryptoSecretCommonClass *sic = QCRYPTO_SECRET_COMMON_CLASS(oc); QCryptoSecretCommonClass *sic = QCRYPTO_SECRET_COMMON_CLASS(oc);
sic->load_data = qcrypto_secret_load_data; sic->load_data = qcrypto_secret_load_data;

View file

@ -263,7 +263,7 @@ qcrypto_secret_finalize(Object *obj)
} }
static void static void
qcrypto_secret_class_init(ObjectClass *oc, void *data) qcrypto_secret_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -375,7 +375,7 @@ static const TypeInfo qcrypto_secret_info = {
.class_size = sizeof(QCryptoSecretCommonClass), .class_size = sizeof(QCryptoSecretCommonClass),
.class_init = qcrypto_secret_class_init, .class_init = qcrypto_secret_class_init,
.abstract = true, .abstract = true,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -103,7 +103,7 @@ qcrypto_secret_prop_get_key(Object *obj, Visitor *v,
static void static void
qcrypto_secret_keyring_class_init(ObjectClass *oc, void *data) qcrypto_secret_keyring_class_init(ObjectClass *oc, const void *data)
{ {
QCryptoSecretCommonClass *sic = QCRYPTO_SECRET_COMMON_CLASS(oc); QCryptoSecretCommonClass *sic = QCRYPTO_SECRET_COMMON_CLASS(oc);
sic->load_data = qcrypto_secret_keyring_load_data; sic->load_data = qcrypto_secret_keyring_load_data;

View file

@ -102,7 +102,8 @@ static GByteArray *qcrypto_tls_cipher_suites_fw_cfg_gen_data(Object *obj,
errp); errp);
} }
static void qcrypto_tls_cipher_suites_class_init(ObjectClass *oc, void *data) static void qcrypto_tls_cipher_suites_class_init(ObjectClass *oc,
const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
FWCfgDataGeneratorClass *fwgc = FW_CFG_DATA_GENERATOR_CLASS(oc); FWCfgDataGeneratorClass *fwgc = FW_CFG_DATA_GENERATOR_CLASS(oc);
@ -117,7 +118,7 @@ static const TypeInfo qcrypto_tls_cipher_suites_info = {
.instance_size = sizeof(QCryptoTLSCipherSuites), .instance_size = sizeof(QCryptoTLSCipherSuites),
.class_size = sizeof(QCryptoTLSCredsClass), .class_size = sizeof(QCryptoTLSCredsClass),
.class_init = qcrypto_tls_cipher_suites_class_init, .class_init = qcrypto_tls_cipher_suites_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ TYPE_FW_CFG_DATA_GENERATOR_INTERFACE }, { TYPE_FW_CFG_DATA_GENERATOR_INTERFACE },
{ } { }

View file

@ -223,7 +223,7 @@ qcrypto_tls_creds_prop_get_endpoint(Object *obj,
static void static void
qcrypto_tls_creds_class_init(ObjectClass *oc, void *data) qcrypto_tls_creds_class_init(ObjectClass *oc, const void *data)
{ {
object_class_property_add_bool(oc, "verify-peer", object_class_property_add_bool(oc, "verify-peer",
qcrypto_tls_creds_prop_get_verify, qcrypto_tls_creds_prop_get_verify,

View file

@ -137,7 +137,7 @@ qcrypto_tls_creds_anon_finalize(Object *obj)
static void static void
qcrypto_tls_creds_anon_class_init(ObjectClass *oc, void *data) qcrypto_tls_creds_anon_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -152,7 +152,7 @@ static const TypeInfo qcrypto_tls_creds_anon_info = {
.instance_finalize = qcrypto_tls_creds_anon_finalize, .instance_finalize = qcrypto_tls_creds_anon_finalize,
.class_size = sizeof(QCryptoTLSCredsAnonClass), .class_size = sizeof(QCryptoTLSCredsAnonClass),
.class_init = qcrypto_tls_creds_anon_class_init, .class_init = qcrypto_tls_creds_anon_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -236,7 +236,7 @@ qcrypto_tls_creds_psk_prop_get_username(Object *obj,
} }
static void static void
qcrypto_tls_creds_psk_class_init(ObjectClass *oc, void *data) qcrypto_tls_creds_psk_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
@ -255,7 +255,7 @@ static const TypeInfo qcrypto_tls_creds_psk_info = {
.instance_finalize = qcrypto_tls_creds_psk_finalize, .instance_finalize = qcrypto_tls_creds_psk_finalize,
.class_size = sizeof(QCryptoTLSCredsPSKClass), .class_size = sizeof(QCryptoTLSCredsPSKClass),
.class_init = qcrypto_tls_creds_psk_class_init, .class_init = qcrypto_tls_creds_psk_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -802,7 +802,7 @@ qcrypto_tls_creds_x509_finalize(Object *obj)
static void static void
qcrypto_tls_creds_x509_class_init(ObjectClass *oc, void *data) qcrypto_tls_creds_x509_class_init(ObjectClass *oc, const void *data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
QCryptoTLSCredsClass *ctcc = QCRYPTO_TLS_CREDS_CLASS(oc); QCryptoTLSCredsClass *ctcc = QCRYPTO_TLS_CREDS_CLASS(oc);
@ -828,7 +828,7 @@ static const TypeInfo qcrypto_tls_creds_x509_info = {
.instance_finalize = qcrypto_tls_creds_x509_finalize, .instance_finalize = qcrypto_tls_creds_x509_finalize,
.class_size = sizeof(QCryptoTLSCredsX509Class), .class_size = sizeof(QCryptoTLSCredsX509Class),
.class_init = qcrypto_tls_creds_x509_class_init, .class_init = qcrypto_tls_creds_x509_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -147,7 +147,7 @@ to introduce an overridden virtual function:
#include "qdev.h" #include "qdev.h"
void my_device_class_init(ObjectClass *klass, void *class_data) void my_device_class_init(ObjectClass *klass, const void *class_data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
dc->reset = my_device_reset; dc->reset = my_device_reset;
@ -249,7 +249,7 @@ class, which someone might choose to change at some point.
// do something // do something
} }
static void my_class_init(ObjectClass *oc, void *data) static void my_class_init(ObjectClass *oc, const void *data)
{ {
MyClass *mc = MY_CLASS(oc); MyClass *mc = MY_CLASS(oc);
@ -279,7 +279,7 @@ class, which someone might choose to change at some point.
// do something else here // do something else here
} }
static void derived_class_init(ObjectClass *oc, void *data) static void derived_class_init(ObjectClass *oc, const void *data)
{ {
MyClass *mc = MY_CLASS(oc); MyClass *mc = MY_CLASS(oc);
DerivedClass *dc = DERIVED_CLASS(oc); DerivedClass *dc = DERIVED_CLASS(oc);
@ -363,7 +363,7 @@ This is equivalent to the following:
:caption: Expansion from defining a simple type :caption: Expansion from defining a simple type
static void my_device_finalize(Object *obj); static void my_device_finalize(Object *obj);
static void my_device_class_init(ObjectClass *oc, void *data); static void my_device_class_init(ObjectClass *oc, const void *data);
static void my_device_init(Object *obj); static void my_device_init(Object *obj);
static const TypeInfo my_device_info = { static const TypeInfo my_device_info = {

View file

@ -216,7 +216,7 @@ in reset.
ResettablePhases parent_phases; ResettablePhases parent_phases;
} MyDevClass; } MyDevClass;
static void mydev_class_init(ObjectClass *class, void *data) static void mydev_class_init(ObjectClass *class, const void *data)
{ {
MyDevClass *myclass = MYDEV_CLASS(class); MyDevClass *myclass = MYDEV_CLASS(class);
ResettableClass *rc = RESETTABLE_CLASS(class); ResettableClass *rc = RESETTABLE_CLASS(class);

View file

@ -119,7 +119,7 @@ manually instantiated:
qdev_realize(vdev, BUS(&vpci_dev->bus), errp); qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
} }
static void virtio_blk_pci_class_init(ObjectClass *klass, void *data) static void virtio_blk_pci_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass); VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);

View file

@ -97,7 +97,8 @@ static bool event_loop_base_can_be_deleted(UserCreatable *uc)
return true; return true;
} }
static void event_loop_base_class_init(ObjectClass *klass, void *class_data) static void event_loop_base_class_init(ObjectClass *klass,
const void *class_data)
{ {
UserCreatableClass *ucc = USER_CREATABLE_CLASS(klass); UserCreatableClass *ucc = USER_CREATABLE_CLASS(klass);
ucc->complete = event_loop_base_complete; ucc->complete = event_loop_base_complete;
@ -125,7 +126,7 @@ static const TypeInfo event_loop_base_info = {
.class_size = sizeof(EventLoopBaseClass), .class_size = sizeof(EventLoopBaseClass),
.class_init = event_loop_base_class_init, .class_init = event_loop_base_class_init,
.abstract = true, .abstract = true,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }

View file

@ -565,15 +565,30 @@ static void gdb_register_feature(CPUState *cpu, int base_reg,
g_array_append_val(cpu->gdb_regs, s); g_array_append_val(cpu->gdb_regs, s);
} }
static const char *gdb_get_core_xml_file(CPUState *cpu)
{
CPUClass *cc = cpu->cc;
/*
* The CPU class can provide the XML filename via a method,
* or as a simple fixed string field.
*/
if (cc->gdb_get_core_xml_file) {
return cc->gdb_get_core_xml_file(cpu);
}
return cc->gdb_core_xml_file;
}
void gdb_init_cpu(CPUState *cpu) void gdb_init_cpu(CPUState *cpu)
{ {
CPUClass *cc = cpu->cc; CPUClass *cc = cpu->cc;
const GDBFeature *feature; const GDBFeature *feature;
const char *xmlfile = gdb_get_core_xml_file(cpu);
cpu->gdb_regs = g_array_new(false, false, sizeof(GDBRegisterState)); cpu->gdb_regs = g_array_new(false, false, sizeof(GDBRegisterState));
if (cc->gdb_core_xml_file) { if (xmlfile) {
feature = gdb_find_static_feature(cc->gdb_core_xml_file); feature = gdb_find_static_feature(xmlfile);
gdb_register_feature(cpu, 0, gdb_register_feature(cpu, 0,
cc->gdb_read_register, cc->gdb_write_register, cc->gdb_read_register, cc->gdb_write_register,
feature); feature);
@ -1644,7 +1659,7 @@ void gdb_extend_qsupported_features(char *qflags)
static void handle_query_supported(GArray *params, void *user_ctx) static void handle_query_supported(GArray *params, void *user_ctx)
{ {
g_string_printf(gdbserver_state.str_buf, "PacketSize=%x", MAX_PACKET_LENGTH); g_string_printf(gdbserver_state.str_buf, "PacketSize=%x", MAX_PACKET_LENGTH);
if (first_cpu->cc->gdb_core_xml_file) { if (gdb_get_core_xml_file(first_cpu)) {
g_string_append(gdbserver_state.str_buf, ";qXfer:features:read+"); g_string_append(gdbserver_state.str_buf, ";qXfer:features:read+");
} }
@ -1701,7 +1716,7 @@ static void handle_query_xfer_features(GArray *params, void *user_ctx)
} }
process = gdb_get_cpu_process(gdbserver_state.g_cpu); process = gdb_get_cpu_process(gdbserver_state.g_cpu);
if (!gdbserver_state.g_cpu->cc->gdb_core_xml_file) { if (!gdb_get_core_xml_file(gdbserver_state.g_cpu)) {
gdb_put_packet(""); gdb_put_packet("");
return; return;
} }

View file

@ -243,7 +243,7 @@ static void gdb_monitor_open(Chardev *chr, ChardevBackend *backend,
*be_opened = false; *be_opened = false;
} }
static void char_gdb_class_init(ObjectClass *oc, void *data) static void char_gdb_class_init(ObjectClass *oc, const void *data)
{ {
ChardevClass *cc = CHARDEV_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc);

View file

@ -248,7 +248,7 @@ static const Property virtio_9p_properties[] = {
DEFINE_PROP_STRING("fsdev", V9fsVirtioState, state.fsconf.fsdev_id), DEFINE_PROP_STRING("fsdev", V9fsVirtioState, state.fsconf.fsdev_id),
}; };
static void virtio_9p_class_init(ObjectClass *klass, void *data) static void virtio_9p_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass); VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);

View file

@ -1018,7 +1018,7 @@ static const Property erst_properties[] = {
default_record_size, ERST_RECORD_SIZE), default_record_size, ERST_RECORD_SIZE),
}; };
static void erst_class_init(ObjectClass *klass, void *data) static void erst_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
@ -1044,7 +1044,7 @@ static const TypeInfo erst_type_info = {
.parent = TYPE_PCI_DEVICE, .parent = TYPE_PCI_DEVICE,
.class_init = erst_class_init, .class_init = erst_class_init,
.instance_size = sizeof(ERSTDeviceState), .instance_size = sizeof(ERSTDeviceState),
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ INTERFACE_CONVENTIONAL_PCI_DEVICE }, { INTERFACE_CONVENTIONAL_PCI_DEVICE },
{ } { }
} }

View file

@ -469,7 +469,7 @@ static void acpi_ged_initfn(Object *obj)
sysbus_init_mmio(sbd, &ged_st->regs); sysbus_init_mmio(sbd, &ged_st->regs);
} }
static void acpi_ged_class_init(ObjectClass *class, void *data) static void acpi_ged_class_init(ObjectClass *class, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(class); DeviceClass *dc = DEVICE_CLASS(class);
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(class); HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(class);
@ -494,7 +494,7 @@ static const TypeInfo acpi_ged_info = {
.instance_size = sizeof(AcpiGedState), .instance_size = sizeof(AcpiGedState),
.instance_init = acpi_ged_initfn, .instance_init = acpi_ged_initfn,
.class_init = acpi_ged_class_init, .class_init = acpi_ged_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_HOTPLUG_HANDLER }, { TYPE_HOTPLUG_HANDLER },
{ TYPE_ACPI_DEVICE_IF }, { TYPE_ACPI_DEVICE_IF },
{ } { }

View file

@ -133,7 +133,7 @@ static void acpi_generic_initiator_set_node(Object *obj, Visitor *v,
ms->numa_state->nodes[gi->node].has_gi = true; ms->numa_state->nodes[gi->node].has_gi = true;
} }
static void acpi_generic_initiator_class_init(ObjectClass *oc, void *data) static void acpi_generic_initiator_class_init(ObjectClass *oc, const void *data)
{ {
object_class_property_add_str(oc, "pci-dev", NULL, object_class_property_add_str(oc, "pci-dev", NULL,
acpi_generic_initiator_set_pci_device); acpi_generic_initiator_set_pci_device);
@ -247,7 +247,7 @@ static void acpi_generic_port_set_node(Object *obj, Visitor *v,
gp->node = value; gp->node = value;
} }
static void acpi_generic_port_class_init(ObjectClass *oc, void *data) static void acpi_generic_port_class_init(ObjectClass *oc, const void *data)
{ {
object_class_property_add_str(oc, "pci-bus", NULL, object_class_property_add_str(oc, "pci-bus", NULL,
acpi_generic_port_set_pci_bus); acpi_generic_port_set_pci_bus);

View file

@ -619,7 +619,7 @@ static const Property piix4_pm_properties[] = {
not_migrate_acpi_index, false), not_migrate_acpi_index, false),
}; };
static void piix4_pm_class_init(ObjectClass *klass, void *data) static void piix4_pm_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
@ -657,7 +657,7 @@ static const TypeInfo piix4_pm_info = {
.instance_init = piix4_pm_init, .instance_init = piix4_pm_init,
.instance_size = sizeof(PIIX4PMState), .instance_size = sizeof(PIIX4PMState),
.class_init = piix4_pm_class_init, .class_init = piix4_pm_class_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_HOTPLUG_HANDLER }, { TYPE_HOTPLUG_HANDLER },
{ TYPE_ACPI_DEVICE_IF }, { TYPE_ACPI_DEVICE_IF },
{ INTERFACE_CONVENTIONAL_PCI_DEVICE }, { INTERFACE_CONVENTIONAL_PCI_DEVICE },

View file

@ -154,7 +154,7 @@ static void vmclock_realize(DeviceState *dev, Error **errp)
vmclock_update_guest(vms); vmclock_update_guest(vms);
} }
static void vmclock_device_class_init(ObjectClass *klass, void *data) static void vmclock_device_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);

View file

@ -218,7 +218,7 @@ static const Property vmgenid_device_properties[] = {
DEFINE_PROP_UUID(VMGENID_GUID, VmGenIdState, guid), DEFINE_PROP_UUID(VMGENID_GUID, VmGenIdState, guid),
}; };
static void vmgenid_device_class_init(ObjectClass *klass, void *data) static void vmgenid_device_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);

View file

@ -291,7 +291,7 @@ static const Property aspeed_adc_engine_properties[] = {
DEFINE_PROP_UINT32("nr-channels", AspeedADCEngineState, nr_channels, 0), DEFINE_PROP_UINT32("nr-channels", AspeedADCEngineState, nr_channels, 0),
}; };
static void aspeed_adc_engine_class_init(ObjectClass *klass, void *data) static void aspeed_adc_engine_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
@ -369,7 +369,7 @@ static void aspeed_adc_realize(DeviceState *dev, Error **errp)
} }
} }
static void aspeed_adc_class_init(ObjectClass *klass, void *data) static void aspeed_adc_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
AspeedADCClass *aac = ASPEED_ADC_CLASS(klass); AspeedADCClass *aac = ASPEED_ADC_CLASS(klass);
@ -379,7 +379,7 @@ static void aspeed_adc_class_init(ObjectClass *klass, void *data)
aac->nr_engines = 1; aac->nr_engines = 1;
} }
static void aspeed_2600_adc_class_init(ObjectClass *klass, void *data) static void aspeed_2600_adc_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
AspeedADCClass *aac = ASPEED_ADC_CLASS(klass); AspeedADCClass *aac = ASPEED_ADC_CLASS(klass);
@ -388,7 +388,7 @@ static void aspeed_2600_adc_class_init(ObjectClass *klass, void *data)
aac->nr_engines = 2; aac->nr_engines = 2;
} }
static void aspeed_1030_adc_class_init(ObjectClass *klass, void *data) static void aspeed_1030_adc_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
AspeedADCClass *aac = ASPEED_ADC_CLASS(klass); AspeedADCClass *aac = ASPEED_ADC_CLASS(klass);
@ -397,7 +397,7 @@ static void aspeed_1030_adc_class_init(ObjectClass *klass, void *data)
aac->nr_engines = 2; aac->nr_engines = 2;
} }
static void aspeed_2700_adc_class_init(ObjectClass *klass, void *data) static void aspeed_2700_adc_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
AspeedADCClass *aac = ASPEED_ADC_CLASS(klass); AspeedADCClass *aac = ASPEED_ADC_CLASS(klass);

View file

@ -271,7 +271,7 @@ static const Property npcm7xx_timer_properties[] = {
DEFINE_PROP_UINT32("iref", NPCM7xxADCState, iref, NPCM7XX_ADC_DEFAULT_IREF), DEFINE_PROP_UINT32("iref", NPCM7xxADCState, iref, NPCM7XX_ADC_DEFAULT_IREF),
}; };
static void npcm7xx_adc_class_init(ObjectClass *klass, void *data) static void npcm7xx_adc_class_init(ObjectClass *klass, const void *data)
{ {
ResettableClass *rc = RESETTABLE_CLASS(klass); ResettableClass *rc = RESETTABLE_CLASS(klass);
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);

View file

@ -284,7 +284,7 @@ static void stm32f2xx_adc_init(Object *obj)
sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmio); sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmio);
} }
static void stm32f2xx_adc_class_init(ObjectClass *klass, void *data) static void stm32f2xx_adc_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);

View file

@ -281,7 +281,7 @@ static const VMStateDescription vmstate_zynq_xadc = {
} }
}; };
static void zynq_xadc_class_init(ObjectClass *klass, void *data) static void zynq_xadc_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);

View file

@ -935,7 +935,7 @@ static const TypeInfo typhoon_pcihost_info = {
}; };
static void typhoon_iommu_memory_region_class_init(ObjectClass *klass, static void typhoon_iommu_memory_region_class_init(ObjectClass *klass,
void *data) const void *data)
{ {
IOMMUMemoryRegionClass *imrc = IOMMU_MEMORY_REGION_CLASS(klass); IOMMUMemoryRegionClass *imrc = IOMMU_MEMORY_REGION_CLASS(klass);

View file

@ -208,7 +208,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->wdt), 0, AW_A10_WDT_BASE, 1); sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->wdt), 0, AW_A10_WDT_BASE, 1);
} }
static void aw_a10_class_init(ObjectClass *oc, void *data) static void aw_a10_class_init(ObjectClass *oc, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(oc); DeviceClass *dc = DEVICE_CLASS(oc);

View file

@ -466,7 +466,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
} }
} }
static void allwinner_h3_class_init(ObjectClass *oc, void *data) static void allwinner_h3_class_init(ObjectClass *oc, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(oc); DeviceClass *dc = DEVICE_CLASS(oc);

View file

@ -539,7 +539,7 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
} }
} }
static void allwinner_r40_class_init(ObjectClass *oc, void *data) static void allwinner_r40_class_init(ObjectClass *oc, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(oc); DeviceClass *dc = DEVICE_CLASS(oc);

View file

@ -1691,7 +1691,7 @@ static void armsse_reset(DeviceState *dev)
s->nsccfg = 0; s->nsccfg = 0;
} }
static void armsse_class_init(ObjectClass *klass, void *data) static void armsse_class_init(ObjectClass *klass, const void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
IDAUInterfaceClass *iic = IDAU_INTERFACE_CLASS(klass); IDAUInterfaceClass *iic = IDAU_INTERFACE_CLASS(klass);
@ -1713,7 +1713,7 @@ static const TypeInfo armsse_info = {
.class_size = sizeof(ARMSSEClass), .class_size = sizeof(ARMSSEClass),
.instance_init = armsse_init, .instance_init = armsse_init,
.abstract = true, .abstract = true,
.interfaces = (InterfaceInfo[]) { .interfaces = (const InterfaceInfo[]) {
{ TYPE_IDAU_INTERFACE }, { TYPE_IDAU_INTERFACE },
{ } { }
} }
@ -1730,7 +1730,7 @@ static void armsse_register_types(void)
.name = armsse_variants[i].name, .name = armsse_variants[i].name,
.parent = TYPE_ARM_SSE, .parent = TYPE_ARM_SSE,
.class_init = armsse_class_init, .class_init = armsse_class_init,
.class_data = (void *)&armsse_variants[i], .class_data = &armsse_variants[i],
}; };
type_register_static(&ti); type_register_static(&ti);
} }

Some files were not shown because too many files have changed in this diff Show more