summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEduardo Habkost <ehabkost@redhat.com>2014-09-26 17:45:30 -0300
committerPaolo Bonzini <pbonzini@redhat.com>2014-10-09 12:57:10 +0200
commitf6a1ef64408a5f7f52601589fef2a850b93d817e (patch)
tree1a272c6f0d4ed248572bb2835b17318ef8c9daa0
parent0d15da8e6fc3cbcd088476c561dcc88b9aae493a (diff)
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>
-rw-r--r--accel.c11
-rw-r--r--include/hw/boards.h2
-rw-r--r--include/qemu/typedefs.h1
-rw-r--r--include/sysemu/accel.h4
-rw-r--r--kvm-all.c3
-rw-r--r--qtest.c2
-rw-r--r--vl.c2
-rw-r--r--xen-common.c2
8 files changed, 14 insertions, 13 deletions
diff --git a/accel.c b/accel.c
index b151d558a5..6087ab32b7 100644
--- a/accel.c
+++ b/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",
diff --git a/include/hw/boards.h b/include/hw/boards.h
index dfb6718dc1..0058c49d8d 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -9,8 +9,6 @@
#include "qom/object.h"
-typedef struct MachineState MachineState;
-
typedef void QEMUMachineInitFunc(MachineState *ms);
typedef void QEMUMachineResetFunc(void);
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index 5f20b0e263..04df51b6fc 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -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;
diff --git a/include/sysemu/accel.h b/include/sysemu/accel.h
index 8812cdae21..997720f36c 100644
--- a/include/sysemu/accel.h
+++ b/include/sysemu/accel.h
@@ -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
diff --git a/kvm-all.c b/kvm-all.c
index ce0e4c7e40..0a9de929e0 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -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";
diff --git a/qtest.c b/qtest.c
index 18e26fc41f..4b85995de0 100644
--- a/qtest.c
+++ b/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;
diff --git a/vl.c b/vl.c
index c3def21666..020b7c3d76 100644
--- a/vl.c
+++ b/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;
diff --git a/xen-common.c b/xen-common.c
index acb738f2ff..56359ca725 100644
--- a/xen-common.c
+++ b/xen-common.c
@@ -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) {