accel: Extract AccelClass definition to 'accel/accel-ops.h'
Only accelerator implementations (and the common accelator code) need to know about AccelClass internals. Move the definition out but forward declare AccelState and AccelClass. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20250703173248.44995-39-philmd@linaro.org>
This commit is contained in:
parent
05927e9dc9
commit
f7a7e7dd21
19 changed files with 71 additions and 39 deletions
|
|
@ -502,7 +502,7 @@ F: include/exec/target_long.h
|
|||
F: include/qemu/accel.h
|
||||
F: include/system/accel-*.h
|
||||
F: include/system/cpus.h
|
||||
F: include/accel/accel-cpu*.h
|
||||
F: include/accel/accel-*.h
|
||||
F: accel/accel-*.?
|
||||
F: accel/dummy-cpus.?
|
||||
F: accel/Makefile.objs
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "qemu/target-info.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "accel-internal.h"
|
||||
|
||||
/* Lookup AccelClass from opt_name. Returns NULL if not found */
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "hw/boards.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "system/cpus.h"
|
||||
#include "qemu/error-report.h"
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "system/address-spaces.h"
|
||||
#include "system/memory.h"
|
||||
#include "system/hvf.h"
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include "system/runstate.h"
|
||||
#include "system/cpus.h"
|
||||
#include "system/accel-blocker.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "qemu/bswap.h"
|
||||
#include "exec/tswap.h"
|
||||
#include "system/memory.h"
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include "qemu/option.h"
|
||||
#include "qemu/config-file.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "system/qtest.h"
|
||||
#include "system/cpus.h"
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "system/tcg.h"
|
||||
#include "system/replay.h"
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@
|
|||
#ifndef CONFIG_USER_ONLY
|
||||
#include "hw/boards.h"
|
||||
#endif
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "accel/tcg/cpu-ops.h"
|
||||
#include "internal-common.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include "chardev/char.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "accel/dummy-cpus.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "system/cpus.h"
|
||||
#include "system/xen.h"
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "qemu/plugin.h"
|
||||
#include "user/guest-base.h"
|
||||
#include "user/page-protection.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "tcg/startup.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "qemu/envlist.h"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include "gdbstub/commands.h"
|
||||
#include "exec/hwaddr.h"
|
||||
#include "exec/tb-flush.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "accel/accel-cpu-ops.h"
|
||||
#include "system/cpus.h"
|
||||
#include "system/runstate.h"
|
||||
|
|
|
|||
49
include/accel/accel-ops.h
Normal file
49
include/accel/accel-ops.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Accelerator handlers
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef ACCEL_OPS_H
|
||||
#define ACCEL_OPS_H
|
||||
|
||||
#include "exec/hwaddr.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
struct AccelState {
|
||||
Object parent_obj;
|
||||
};
|
||||
|
||||
struct AccelClass {
|
||||
ObjectClass parent_class;
|
||||
|
||||
const char *name;
|
||||
/* Cached by accel_init_ops_interfaces() when created */
|
||||
AccelOpsClass *ops;
|
||||
|
||||
int (*init_machine)(AccelState *as, MachineState *ms);
|
||||
bool (*cpu_common_realize)(CPUState *cpu, Error **errp);
|
||||
void (*cpu_common_unrealize)(CPUState *cpu);
|
||||
|
||||
/* system related hooks */
|
||||
void (*setup_post)(AccelState *as);
|
||||
void (*pre_resume_vm)(AccelState *as, bool step_pending);
|
||||
bool (*has_memory)(AccelState *accel, AddressSpace *as,
|
||||
hwaddr start_addr, hwaddr size);
|
||||
|
||||
/* gdbstub related hooks */
|
||||
int (*gdbstub_supported_sstep_flags)(AccelState *as);
|
||||
|
||||
bool *allowed;
|
||||
/*
|
||||
* Array of global properties that would be applied when specific
|
||||
* accelerator is chosen. It works like MachineClass.compat_props
|
||||
* but it's for accelerators not machines. Accelerator-provided
|
||||
* global properties may be overridden by machine-type
|
||||
* compat_props or user-provided global properties.
|
||||
*/
|
||||
GPtrArray *compat_props;
|
||||
};
|
||||
|
||||
#endif /* ACCEL_OPS_H */
|
||||
|
|
@ -26,43 +26,8 @@
|
|||
#include "qom/object.h"
|
||||
#include "exec/hwaddr.h"
|
||||
|
||||
struct AccelState {
|
||||
/*< private >*/
|
||||
Object parent_obj;
|
||||
};
|
||||
|
||||
typedef struct AccelClass {
|
||||
/*< private >*/
|
||||
ObjectClass parent_class;
|
||||
/*< public >*/
|
||||
|
||||
const char *name;
|
||||
/* Cached by accel_init_ops_interfaces() when created */
|
||||
AccelOpsClass *ops;
|
||||
|
||||
int (*init_machine)(AccelState *as, MachineState *ms);
|
||||
bool (*cpu_common_realize)(CPUState *cpu, Error **errp);
|
||||
void (*cpu_common_unrealize)(CPUState *cpu);
|
||||
|
||||
/* system related hooks */
|
||||
void (*setup_post)(AccelState *as);
|
||||
void (*pre_resume_vm)(AccelState *as, bool step_pending);
|
||||
bool (*has_memory)(AccelState *accel, AddressSpace *as,
|
||||
hwaddr start_addr, hwaddr size);
|
||||
|
||||
/* gdbstub related hooks */
|
||||
int (*gdbstub_supported_sstep_flags)(AccelState *as);
|
||||
|
||||
bool *allowed;
|
||||
/*
|
||||
* Array of global properties that would be applied when specific
|
||||
* accelerator is chosen. It works like MachineClass.compat_props
|
||||
* but it's for accelerators not machines. Accelerator-provided
|
||||
* global properties may be overridden by machine-type
|
||||
* compat_props or user-provided global properties.
|
||||
*/
|
||||
GPtrArray *compat_props;
|
||||
} AccelClass;
|
||||
typedef struct AccelState AccelState;
|
||||
typedef struct AccelClass AccelClass;
|
||||
|
||||
#define TYPE_ACCEL "accel"
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "qemu/queue.h"
|
||||
#include "exec/vaddr.h"
|
||||
#include "qom/object.h"
|
||||
#include "accel/accel-ops.h"
|
||||
|
||||
#ifdef __aarch64__
|
||||
#include <Hypervisor/Hypervisor.h>
|
||||
|
|
@ -45,7 +46,7 @@ typedef struct hvf_vcpu_caps {
|
|||
} hvf_vcpu_caps;
|
||||
|
||||
struct HVFState {
|
||||
AccelState parent;
|
||||
AccelState parent_obj;
|
||||
|
||||
hvf_slot slots[32];
|
||||
int num_slots;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "qemu/accel.h"
|
||||
#include "qemu/queue.h"
|
||||
#include "system/kvm.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "hw/boards.h"
|
||||
#include "hw/i386/topology.h"
|
||||
#include "io/channel-socket.h"
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include "user/page-protection.h"
|
||||
#include "exec/gdbstub.h"
|
||||
#include "gdbstub/user.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "tcg/startup.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "qemu/envlist.h"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "system/runstate.h"
|
||||
#include "system/tcg.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "hw/boards.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "system/address-spaces.h"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "system/address-spaces.h"
|
||||
#include "system/ioport.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "system/nvmm.h"
|
||||
#include "system/cpus.h"
|
||||
#include "system/runstate.h"
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "system/ioport.h"
|
||||
#include "gdbstub/helpers.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "system/whpx.h"
|
||||
#include "system/cpus.h"
|
||||
#include "system/runstate.h"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue