accel: Pass MachineState object to accel init functions
Most of the machine options and machine state information is in the MachineState object, not on the MachineClass. This will allow init functions to use the MachineState object directly instead of qemu_get_machine_opts() or the current_machine global. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0d15da8e6f
commit
f6a1ef6440
11
accel.c
11
accel.c
@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
#include "sysemu/accel.h"
|
||||
#include "hw/boards.h"
|
||||
#include "qemu-common.h"
|
||||
#include "sysemu/arch_init.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
@ -35,7 +36,7 @@
|
||||
int tcg_tb_size;
|
||||
static bool tcg_allowed = true;
|
||||
|
||||
static int tcg_init(MachineClass *mc)
|
||||
static int tcg_init(MachineState *ms)
|
||||
{
|
||||
tcg_exec_init(tcg_tb_size * 1024 * 1024);
|
||||
return 0;
|
||||
@ -57,18 +58,18 @@ static AccelClass *accel_find(const char *opt_name)
|
||||
return ac;
|
||||
}
|
||||
|
||||
static int accel_init_machine(AccelClass *acc, MachineClass *mc)
|
||||
static int accel_init_machine(AccelClass *acc, MachineState *ms)
|
||||
{
|
||||
int ret;
|
||||
*(acc->allowed) = true;
|
||||
ret = acc->init_machine(mc);
|
||||
ret = acc->init_machine(ms);
|
||||
if (ret < 0) {
|
||||
*(acc->allowed) = false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int configure_accelerator(MachineClass *mc)
|
||||
int configure_accelerator(MachineState *ms)
|
||||
{
|
||||
const char *p;
|
||||
char buf[10];
|
||||
@ -98,7 +99,7 @@ int configure_accelerator(MachineClass *mc)
|
||||
acc->name);
|
||||
continue;
|
||||
}
|
||||
ret = accel_init_machine(acc, mc);
|
||||
ret = accel_init_machine(acc, ms);
|
||||
if (ret < 0) {
|
||||
init_failed = true;
|
||||
fprintf(stderr, "failed to initialize %s: %s\n",
|
||||
|
@ -9,8 +9,6 @@
|
||||
#include "qom/object.h"
|
||||
|
||||
|
||||
typedef struct MachineState MachineState;
|
||||
|
||||
typedef void QEMUMachineInitFunc(MachineState *ms);
|
||||
|
||||
typedef void QEMUMachineResetFunc(void);
|
||||
|
@ -32,6 +32,7 @@ typedef struct MemoryMappingList MemoryMappingList;
|
||||
|
||||
typedef struct QEMUMachine QEMUMachine;
|
||||
typedef struct MachineClass MachineClass;
|
||||
typedef struct MachineState MachineState;
|
||||
typedef struct NICInfo NICInfo;
|
||||
typedef struct HCIInfo HCIInfo;
|
||||
typedef struct AudioState AudioState;
|
||||
|
@ -39,7 +39,7 @@ typedef struct AccelClass {
|
||||
const char *opt_name;
|
||||
const char *name;
|
||||
int (*available)(void);
|
||||
int (*init_machine)(MachineClass *mc);
|
||||
int (*init_machine)(MachineState *ms);
|
||||
bool *allowed;
|
||||
} AccelClass;
|
||||
|
||||
@ -57,6 +57,6 @@ typedef struct AccelClass {
|
||||
|
||||
extern int tcg_tb_size;
|
||||
|
||||
int configure_accelerator(MachineClass *mc);
|
||||
int configure_accelerator(MachineState *ms);
|
||||
|
||||
#endif
|
||||
|
@ -1380,8 +1380,9 @@ static int kvm_max_vcpus(KVMState *s)
|
||||
return (ret) ? ret : kvm_recommended_vcpus(s);
|
||||
}
|
||||
|
||||
static int kvm_init(MachineClass *mc)
|
||||
static int kvm_init(MachineState *ms)
|
||||
{
|
||||
MachineClass *mc = MACHINE_GET_CLASS(ms);
|
||||
static const char upgrade_note[] =
|
||||
"Please upgrade to at least kernel 2.6.29 or recent kvm-kmod\n"
|
||||
"(see http://sourceforge.net/projects/kvm).\n";
|
||||
|
2
qtest.c
2
qtest.c
@ -520,7 +520,7 @@ static void configure_qtest_icount(const char *options)
|
||||
qemu_opts_del(opts);
|
||||
}
|
||||
|
||||
static int qtest_init_accel(MachineClass *mc)
|
||||
static int qtest_init_accel(MachineState *ms)
|
||||
{
|
||||
configure_qtest_icount("0");
|
||||
return 0;
|
||||
|
2
vl.c
2
vl.c
@ -4179,7 +4179,7 @@ int main(int argc, char **argv, char **envp)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
configure_accelerator(machine_class);
|
||||
configure_accelerator(current_machine);
|
||||
|
||||
if (qtest_chrdev) {
|
||||
Error *local_err = NULL;
|
||||
|
@ -110,7 +110,7 @@ static void xen_change_state_handler(void *opaque, int running,
|
||||
}
|
||||
}
|
||||
|
||||
static int xen_init(MachineClass *mc)
|
||||
static int xen_init(MachineState *ms)
|
||||
{
|
||||
xen_xc = xen_xc_interface_open(0, 0, 0);
|
||||
if (xen_xc == XC_HANDLER_INITIAL_VALUE) {
|
||||
|
Loading…
Reference in New Issue
Block a user