mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-07 07:30:33 +00:00
vmstate: port syborg_keyboard
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
8dc5907090
commit
0c067bbb26
@ -51,11 +51,11 @@ enum {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
SysBusDevice busdev;
|
SysBusDevice busdev;
|
||||||
int int_enabled;
|
uint32_t int_enabled;
|
||||||
int extension_bit;
|
int extension_bit;
|
||||||
uint32_t fifo_size;
|
uint32_t fifo_size;
|
||||||
uint32_t *key_fifo;
|
uint32_t *key_fifo;
|
||||||
int read_pos, read_count;
|
uint32_t read_pos, read_count;
|
||||||
qemu_irq irq;
|
qemu_irq irq;
|
||||||
} SyborgKeyboardState;
|
} SyborgKeyboardState;
|
||||||
|
|
||||||
@ -165,43 +165,21 @@ static void syborg_keyboard_event(void *opaque, int keycode)
|
|||||||
syborg_keyboard_update(s);
|
syborg_keyboard_update(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void syborg_keyboard_save(QEMUFile *f, void *opaque)
|
static const VMStateDescription vmstate_syborg_keyboard = {
|
||||||
{
|
.name = "syborg_keyboard",
|
||||||
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque;
|
.version_id = 1,
|
||||||
int i;
|
.minimum_version_id = 1,
|
||||||
|
.minimum_version_id_old = 1,
|
||||||
qemu_put_be32(f, s->fifo_size);
|
.fields = (VMStateField[]) {
|
||||||
qemu_put_be32(f, s->int_enabled);
|
VMSTATE_UINT32_EQUAL(fifo_size, SyborgKeyboardState),
|
||||||
qemu_put_be32(f, s->extension_bit);
|
VMSTATE_UINT32(int_enabled, SyborgKeyboardState),
|
||||||
qemu_put_be32(f, s->read_pos);
|
VMSTATE_UINT32(read_pos, SyborgKeyboardState),
|
||||||
qemu_put_be32(f, s->read_count);
|
VMSTATE_UINT32(read_count, SyborgKeyboardState),
|
||||||
for (i = 0; i < s->fifo_size; i++) {
|
VMSTATE_VARRAY_UINT32(key_fifo, SyborgKeyboardState, fifo_size, 1,
|
||||||
qemu_put_be32(f, s->key_fifo[i]);
|
vmstate_info_uint32, uint32),
|
||||||
|
VMSTATE_END_OF_LIST()
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
static int syborg_keyboard_load(QEMUFile *f, void *opaque, int version_id)
|
|
||||||
{
|
|
||||||
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque;
|
|
||||||
uint32_t val;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (version_id != 1)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
val = qemu_get_be32(f);
|
|
||||||
if (val != s->fifo_size)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
s->int_enabled = qemu_get_be32(f);
|
|
||||||
s->extension_bit = qemu_get_be32(f);
|
|
||||||
s->read_pos = qemu_get_be32(f);
|
|
||||||
s->read_count = qemu_get_be32(f);
|
|
||||||
for (i = 0; i < s->fifo_size; i++) {
|
|
||||||
s->key_fifo[i] = qemu_get_be32(f);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int syborg_keyboard_init(SysBusDevice *dev)
|
static int syborg_keyboard_init(SysBusDevice *dev)
|
||||||
{
|
{
|
||||||
@ -221,8 +199,7 @@ static int syborg_keyboard_init(SysBusDevice *dev)
|
|||||||
|
|
||||||
qemu_add_kbd_event_handler(syborg_keyboard_event, s);
|
qemu_add_kbd_event_handler(syborg_keyboard_event, s);
|
||||||
|
|
||||||
register_savevm(&dev->qdev, "syborg_keyboard", -1, 1,
|
vmstate_register(&dev->qdev, -1, &vmstate_syborg_keyboard, s);
|
||||||
syborg_keyboard_save, syborg_keyboard_load, s);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user