overall, all devices' realize functions take an Error **errp, but return void. hw/core/qdev.c code, which realizes devices, therefore does: local_err = NULL; dc->realize(dev, &local_err); if (local_err != NULL) { goto fail; } However, we can improve at least accel_cpu to return a meaningful bool value. Signed-off-by: Claudio Fontana <cfontana@suse.de> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210322132800.7470-9-cfontana@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
/*
|
|
* Accelerator interface, specializes CPUClass
|
|
* This header is used only by target-specific code.
|
|
*
|
|
* Copyright 2021 SUSE LLC
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef ACCEL_CPU_H
|
|
#define ACCEL_CPU_H
|
|
|
|
/*
|
|
* This header is used to define new accelerator-specific target-specific
|
|
* accelerator cpu subclasses.
|
|
* It uses CPU_RESOLVING_TYPE, so this is clearly target-specific.
|
|
*
|
|
* Do not try to use for any other purpose than the implementation of new
|
|
* subclasses in target/, or the accel implementation itself in accel/
|
|
*/
|
|
|
|
#define TYPE_ACCEL_CPU "accel-" CPU_RESOLVING_TYPE
|
|
#define ACCEL_CPU_NAME(name) (name "-" TYPE_ACCEL_CPU)
|
|
typedef struct AccelCPUClass AccelCPUClass;
|
|
DECLARE_CLASS_CHECKERS(AccelCPUClass, ACCEL_CPU, TYPE_ACCEL_CPU)
|
|
|
|
typedef struct AccelCPUClass {
|
|
/*< private >*/
|
|
ObjectClass parent_class;
|
|
/*< public >*/
|
|
|
|
void (*cpu_class_init)(CPUClass *cc);
|
|
void (*cpu_instance_init)(CPUState *cpu);
|
|
bool (*cpu_realizefn)(CPUState *cpu, Error **errp);
|
|
} AccelCPUClass;
|
|
|
|
#endif /* ACCEL_CPU_H */
|