[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 14/25] accel: Pass MachineState object to accel init f
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [RFC 14/25] accel: Pass MachineState object to accel init functions |
Date: |
Wed, 9 Jul 2014 19:04:11 -0300 |
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 the
qemu_get_machine_opts() or current_machine globals, and get the
AccelState object using MachineState.accelerator.
Signed-off-by: Eduardo Habkost <address@hidden>
---
hw/core/accel.c | 11 ++++++-----
include/hw/accel.h | 4 ++--
include/qemu/typedefs.h | 1 +
kvm-all.c | 3 ++-
qtest.c | 2 +-
vl.c | 2 +-
xen-common.c | 2 +-
7 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/hw/core/accel.c b/hw/core/accel.c
index 9552690..4deb53f 100644
--- a/hw/core/accel.c
+++ b/hw/core/accel.c
@@ -24,6 +24,7 @@
*/
#include "hw/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/accel.h b/include/hw/accel.h
index 20b0ec7..4f9909d 100644
--- a/include/hw/accel.h
+++ b/include/hw/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;
@@ -54,6 +54,6 @@ typedef struct AccelClass {
extern int tcg_tb_size;
-int configure_accelerator(MachineClass *mc);
+int configure_accelerator(MachineState *ms);
#endif
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index 5f20b0e..04df51b 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/kvm-all.c b/kvm-all.c
index f96512f..fdb2fb5 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1371,8 +1371,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 7bd81ea..b5fe486 100644
--- a/qtest.c
+++ b/qtest.c
@@ -510,7 +510,7 @@ static void qtest_event(void *opaque, int event)
}
}
-static int qtest_init_accel(MachineClass *mc)
+static int qtest_init_accel(MachineState *ms)
{
configure_icount("0");
diff --git a/vl.c b/vl.c
index d6e5c4e..e1d0502 100644
--- a/vl.c
+++ b/vl.c
@@ -4142,7 +4142,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 3867a87..d9c7abb 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) {
--
1.9.3
- [Qemu-devel] [RFC 02/25] accel: Move accel code to accel.c, (continued)
- [Qemu-devel] [RFC 02/25] accel: Move accel code to accel.c, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 05/25] accel: Move accel name lookup to separate function, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 04/25] accel: Simplify configure_accelerator() using AccelType *acc variable, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 06/25] accel: Use QOM classes for accel types, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 07/25] accel: Make AccelClass.available() optional, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 08/25] accel: Move KVM accel registration to kvm-all.c, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 09/25] accel: Move Xen registration code to xen-common.c, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 10/25] accel: Move qtest accel registration to qtest.c, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 11/25] accel: Remove tcg_available() function, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 13/25] accel: Rename 'init' method to 'init_machine', Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 14/25] accel: Pass MachineState object to accel init functions,
Eduardo Habkost <=
- [Qemu-devel] [RFC 12/25] accel: Move accel init/allowed code to separate function, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 16/25] accel: Save AccelState on MachineState when initializing, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 15/25] accel: Create accel object when initializing machine, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 17/25] kvm: Make KVMState be the TYPE_KVM_ACCEL instance struct, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 20/25] accel: TYPE_X86_ACCEL interface, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 24/25] target-i386: Accept "host" as value for CPU vendor, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 23/25] target-i386: Move accelerator-specific code outside X86CPU.instance_init, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 18/25] accel: Get target name as argument when initializing accelerator, Eduardo Habkost, 2014/07/09
- [Qemu-devel] [RFC 25/25] target-i386: Move KVM CPUID hacking to accelerator cpu_post_init hook, Eduardo Habkost, 2014/07/10
- [Qemu-devel] [RFC 21/25] kvm: x86 KVM accelerator subclass, Eduardo Habkost, 2014/07/10