vmstate: port pmtimer

It was a half conversion.  Finish it.
enabled can only get values of 0, 1 or 2, was declared as an int but
sent as an unint8_t, change its type.

Signed-off-by: Juan Quintela <quintela@redhat.com>
master
Juan Quintela 2010-12-01 23:51:14 +01:00 committed by Anthony Liguori
parent 22a3faf507
commit 852f771ec9
3 changed files with 27 additions and 51 deletions

17
hw/hw.h
View File

@ -689,6 +689,17 @@ extern const VMStateDescription vmstate_usb_device;
.offset = vmstate_offset_macaddr(_state, _field), \
}
extern const VMStateDescription vmstate_ptimer;
#define VMSTATE_PTIMER(_field, _state) { \
.name = (stringify(_field)), \
.version_id = (1), \
.vmsd = &vmstate_ptimer, \
.size = sizeof(ptimer_state *), \
.flags = VMS_STRUCT|VMS_POINTER, \
.offset = vmstate_offset_pointer(_state, _field, ptimer_state), \
}
/* _f : field name
_f_n : num of elements field_name
_n : num of elements
@ -784,12 +795,6 @@ extern const VMStateDescription vmstate_usb_device;
#define VMSTATE_TIMER_ARRAY(_f, _s, _n) \
VMSTATE_ARRAY_OF_POINTER(_f, _s, _n, 0, vmstate_info_timer, QEMUTimer *)
#define VMSTATE_PTIMER_V(_f, _s, _v) \
VMSTATE_POINTER(_f, _s, _v, vmstate_info_ptimer, ptimer_state *)
#define VMSTATE_PTIMER(_f, _s) \
VMSTATE_PTIMER_V(_f, _s, 0)
#define VMSTATE_BOOL_ARRAY_V(_f, _s, _n, _v) \
VMSTATE_ARRAY(_f, _s, _n, _v, vmstate_info_bool, bool)

View File

@ -11,7 +11,7 @@
struct ptimer_state
{
int enabled; /* 0 = disabled, 1 = periodic, 2 = oneshot. */
uint8_t enabled; /* 0 = disabled, 1 = periodic, 2 = oneshot. */
uint64_t limit;
uint64_t delta;
uint32_t period_frac;
@ -188,49 +188,22 @@ void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload)
}
}
void qemu_put_ptimer(QEMUFile *f, ptimer_state *s)
{
qemu_put_byte(f, s->enabled);
qemu_put_be64s(f, &s->limit);
qemu_put_be64s(f, &s->delta);
qemu_put_be32s(f, &s->period_frac);
qemu_put_sbe64s(f, &s->period);
qemu_put_sbe64s(f, &s->last_event);
qemu_put_sbe64s(f, &s->next_event);
qemu_put_timer(f, s->timer);
}
void qemu_get_ptimer(QEMUFile *f, ptimer_state *s)
{
s->enabled = qemu_get_byte(f);
qemu_get_be64s(f, &s->limit);
qemu_get_be64s(f, &s->delta);
qemu_get_be32s(f, &s->period_frac);
qemu_get_sbe64s(f, &s->period);
qemu_get_sbe64s(f, &s->last_event);
qemu_get_sbe64s(f, &s->next_event);
qemu_get_timer(f, s->timer);
}
static int get_ptimer(QEMUFile *f, void *pv, size_t size)
{
ptimer_state *v = pv;
qemu_get_ptimer(f, v);
return 0;
}
static void put_ptimer(QEMUFile *f, void *pv, size_t size)
{
ptimer_state *v = pv;
qemu_put_ptimer(f, v);
}
const VMStateInfo vmstate_info_ptimer = {
const VMStateDescription vmstate_ptimer = {
.name = "ptimer",
.get = get_ptimer,
.put = put_ptimer,
.version_id = 1,
.minimum_version_id = 1,
.minimum_version_id_old = 1,
.fields = (VMStateField[]) {
VMSTATE_UINT8(enabled, ptimer_state),
VMSTATE_UINT64(limit, ptimer_state),
VMSTATE_UINT64(delta, ptimer_state),
VMSTATE_UINT32(period_frac, ptimer_state),
VMSTATE_INT64(period, ptimer_state),
VMSTATE_INT64(last_event, ptimer_state),
VMSTATE_INT64(next_event, ptimer_state),
VMSTATE_TIMER(timer, ptimer_state),
VMSTATE_END_OF_LIST()
}
};
ptimer_state *ptimer_init(QEMUBH *bh)

View File

@ -144,8 +144,6 @@ uint64_t ptimer_get_count(ptimer_state *s);
void ptimer_set_count(ptimer_state *s, uint64_t count);
void ptimer_run(ptimer_state *s, int oneshot);
void ptimer_stop(ptimer_state *s);
void qemu_put_ptimer(QEMUFile *f, ptimer_state *s);
void qemu_get_ptimer(QEMUFile *f, ptimer_state *s);
/* icount */
int64_t qemu_icount_round(int64_t count);