| /* |
| * 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); |
| /* get_stats: Append statistics to @buf */ |
| void (*get_stats)(AccelState *as, GString *buf); |
| |
| /* 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 */ |