Skip to content

Commit

Permalink
accel: Pass MachineState object to accel init functions
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
ehabkost authored and bonzini committed Oct 9, 2014
1 parent 0d15da8 commit f6a1ef6
Show file tree
Hide file tree
Showing 8 changed files with 14 additions and 13 deletions.
11 changes: 6 additions & 5 deletions accel.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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;
Expand All @@ -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];
Expand Down Expand Up @@ -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",
Expand Down
2 changes: 0 additions & 2 deletions include/hw/boards.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
#include "qom/object.h"


typedef struct MachineState MachineState;

typedef void QEMUMachineInitFunc(MachineState *ms);

typedef void QEMUMachineResetFunc(void);
Expand Down
1 change: 1 addition & 0 deletions include/qemu/typedefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions include/sysemu/accel.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -57,6 +57,6 @@ typedef struct AccelClass {

extern int tcg_tb_size;

int configure_accelerator(MachineClass *mc);
int configure_accelerator(MachineState *ms);

#endif
3 changes: 2 additions & 1 deletion kvm-all.c
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
2 changes: 1 addition & 1 deletion qtest.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion xen-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit f6a1ef6

Please sign in to comment.