mirror of https://gitee.com/openkylin/qemu.git
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>
This commit is contained in:
parent
22a3faf507
commit
852f771ec9
17
hw/hw.h
17
hw/hw.h
|
@ -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)
|
||||
|
||||
|
|
59
hw/ptimer.c
59
hw/ptimer.c
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue