Revision 2faf58cd
b/vl.c | ||
---|---|---|
1074 | 1074 |
} |
1075 | 1075 |
} |
1076 | 1076 |
|
1077 |
static void timer_save(QEMUFile *f, void *opaque) |
|
1078 |
{ |
|
1079 |
struct TimersState *s = opaque; |
|
1080 |
|
|
1081 |
qemu_put_be64(f, s->cpu_ticks_offset); |
|
1082 |
qemu_put_be64(f, s->ticks_per_sec); |
|
1083 |
qemu_put_be64(f, s->cpu_clock_offset); |
|
1084 |
} |
|
1085 |
|
|
1086 |
static int timer_load(QEMUFile *f, void *opaque, int version_id) |
|
1087 |
{ |
|
1088 |
struct TimersState *s = opaque; |
|
1089 |
|
|
1090 |
if (version_id != 1 && version_id != 2) |
|
1091 |
return -EINVAL; |
|
1092 |
s->cpu_ticks_offset = qemu_get_be64(f); |
|
1093 |
s->ticks_per_sec = qemu_get_be64(f); |
|
1094 |
if (version_id == 2) { |
|
1095 |
s->cpu_clock_offset = qemu_get_be64(f); |
|
1077 |
static const VMStateDescription vmstate_timers = { |
|
1078 |
.name = "timer", |
|
1079 |
.version_id = 2, |
|
1080 |
.minimum_version_id = 1, |
|
1081 |
.minimum_version_id_old = 1, |
|
1082 |
.fields = (VMStateField []) { |
|
1083 |
VMSTATE_INT64(cpu_ticks_offset, TimersState), |
|
1084 |
VMSTATE_INT64(ticks_per_sec, TimersState), |
|
1085 |
VMSTATE_INT64_V(cpu_clock_offset, TimersState, 2), |
|
1086 |
VMSTATE_END_OF_LIST() |
|
1096 | 1087 |
} |
1097 |
return 0; |
|
1098 |
} |
|
1088 |
}; |
|
1099 | 1089 |
|
1100 | 1090 |
static void qemu_event_increment(void); |
1101 | 1091 |
|
... | ... | |
5626 | 5616 |
if (qemu_opts_foreach(&qemu_drive_opts, drive_init_func, machine, 1) != 0) |
5627 | 5617 |
exit(1); |
5628 | 5618 |
|
5629 |
register_savevm("timer", 0, 2, timer_save, timer_load, &timers_state);
|
|
5619 |
vmstate_register(0, &vmstate_timers ,&timers_state);
|
|
5630 | 5620 |
register_savevm_live("ram", 0, 3, ram_save_live, NULL, ram_load, NULL); |
5631 | 5621 |
|
5632 | 5622 |
/* Maintain compatibility with multiple stdio monitors */ |
Also available in: Unified diff