From: sungmin ha Date: Wed, 10 Jul 2013 02:48:51 +0000 (+0900) Subject: virtio-hwkey, virtio-keyboard: modified for 1.5.1 upgrade X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~900^2~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2a17f66fc8b8d95a3cc80f0a33d54801ed805965;p=sdk%2Femulator%2Fqemu.git virtio-hwkey, virtio-keyboard: modified for 1.5.1 upgrade Change-Id: I17fa1c1cb25c827e0bc82828eda2883e5c8ff947 Signed-off-by: Sungmin Ha --- diff --git a/tizen/src/hw/maru_virtio_hwkey.c b/tizen/src/hw/maru_virtio_hwkey.c index 3bafa6150d..3389e39897 100644 --- a/tizen/src/hw/maru_virtio_hwkey.c +++ b/tizen/src/hw/maru_virtio_hwkey.c @@ -218,23 +218,22 @@ static void maru_hwkey_bh(void *opaque) maru_virtio_hwkey_notify(); } -VirtIODevice *maru_virtio_hwkey_init(DeviceState *dev) +static int virtio_hwkey_device_init(VirtIODevice *vdev) { INFO("initialize the hwkey device\n"); + DeviceState *qdev = DEVICE(vdev); + vhk = VIRTIO_HWKEY(vdev); - vhk = g_malloc0(sizeof(VirtIOHWKey)); - virtio_init(&vhk->vdev, TYPE_VIRTIO_HWKEY, VIRTIO_ID_HWKEY, 0); + virtio_init(vdev, TYPE_VIRTIO_HWKEY, VIRTIO_ID_HWKEY, 0); - if (&vhk->vdev == NULL) { + if (vdev == NULL) { ERR("failed to initialize the hwkey device\n"); - return NULL; + return -1; } - VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(&vhk->vdev); - vdc->get_features = virtio_hwkey_get_features; - vhk->vq = virtio_add_queue(&vhk->vdev, 64, maru_virtio_hwkey_handle); + vhk->vq = virtio_add_queue(vdev, 64, maru_virtio_hwkey_handle); - vhk->qdev = dev; + vhk->qdev = qdev; /* reset the counters */ event_queue_cnt = event_ringbuf_cnt = 0; @@ -243,12 +242,12 @@ VirtIODevice *maru_virtio_hwkey_init(DeviceState *dev) /* bottom-half */ vhk->bh = qemu_bh_new(maru_hwkey_bh, vhk); - return &(vhk->vdev); + return 0; } -void maru_virtio_hwkey_exit(VirtIODevice *vdev) +static int virtio_hwkey_device_exit(DeviceState *qdev) { - VirtIOHWKey *vhk = (VirtIOHWKey *)vdev; + VirtIODevice *vdev = VIRTIO_DEVICE(qdev); INFO("exit the hwkey device\n"); @@ -259,5 +258,30 @@ void maru_virtio_hwkey_exit(VirtIODevice *vdev) virtio_cleanup(vdev); pthread_mutex_destroy(&event_mutex); + + return 0; +} + +static void virtio_hwkey_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass); + dc->exit = virtio_hwkey_device_exit; + vdc->init = virtio_hwkey_device_init; + vdc->get_features = virtio_hwkey_get_features; } +static const TypeInfo virtio_hwkey_info = { + .name = TYPE_VIRTIO_HWKEY, + .parent = TYPE_VIRTIO_DEVICE, + .instance_size = sizeof(VirtIOHWKey), + .class_init = virtio_hwkey_class_init, +}; + +static void virtio_register_types(void) +{ + type_register_static(&virtio_hwkey_info); +} + +type_init(virtio_register_types) + diff --git a/tizen/src/hw/maru_virtio_keyboard.c b/tizen/src/hw/maru_virtio_keyboard.c index 30f559faaa..52a82866d0 100644 --- a/tizen/src/hw/maru_virtio_keyboard.c +++ b/tizen/src/hw/maru_virtio_keyboard.c @@ -218,27 +218,26 @@ static void virtio_keyboard_bh(void *opaque) virtio_keyboard_notify(opaque); } -VirtIODevice *virtio_keyboard_init(DeviceState *dev) +static int virtio_keyboard_device_init(VirtIODevice *vdev) { VirtIOKeyboard *vkbd; - INFO("initialize virtio-keyboard device\n"); + DeviceState *qdev = DEVICE(vdev); + vkbd = VIRTIO_KEYBOARD(vdev); - vkbd = g_malloc0(sizeof(VirtIOKeyboard)); - virtio_init(&vkbd->vdev, TYPE_VIRTIO_KEYBOARD, VIRTIO_ID_KEYBOARD, 0); + INFO("initialize virtio-keyboard device\n"); + virtio_init(vdev, TYPE_VIRTIO_KEYBOARD, VIRTIO_ID_KEYBOARD, 0); - if (&vkbd->vdev == NULL) { + if (vdev == NULL) { ERR("failed to initialize device\n"); - return NULL; + return -1; } memset(&vkbd->kbdqueue, 0x00, sizeof(vkbd->kbdqueue)); vkbd->extension_key = 0; qemu_mutex_init(&vkbd->event_mutex); - VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(&vkbd->vdev); - vdc->get_features = virtio_keyboard_get_features; - vkbd->vq = virtio_add_queue(&vkbd->vdev, 128, virtio_keyboard_handle); - vkbd->qdev = dev; + vkbd->vq = virtio_add_queue(vdev, 128, virtio_keyboard_handle); + vkbd->qdev = qdev; /* bottom half */ vkbd->bh = qemu_bh_new(virtio_keyboard_bh, vkbd); @@ -246,12 +245,14 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev) /* register keyboard handler */ vkbd->eh_entry = qemu_add_kbd_event_handler(virtio_keyboard_event, vkbd); - return &vkbd->vdev; + return 0; } -void virtio_keyboard_exit(VirtIODevice *vdev) +static int virtio_keyboard_device_exit(DeviceState *qdev) { + VirtIODevice *vdev = VIRTIO_DEVICE(qdev); VirtIOKeyboard *vkbd = (VirtIOKeyboard *)vdev; + INFO("destroy device\n"); qemu_remove_kbd_event_handler(vkbd->eh_entry); @@ -263,4 +264,30 @@ void virtio_keyboard_exit(VirtIODevice *vdev) qemu_mutex_destroy(&vkbd->event_mutex); virtio_cleanup(vdev); + + return 0; } + +static void virtio_keyboard_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass); + dc->exit = virtio_keyboard_device_exit; + vdc->init = virtio_keyboard_device_init; + vdc->get_features = virtio_keyboard_get_features; +} + +static const TypeInfo virtio_keyboard_info = { + .name = TYPE_VIRTIO_KEYBOARD, + .parent = TYPE_VIRTIO_DEVICE, + .instance_size = sizeof(VirtIOKeyboard), + .class_init = virtio_keyboard_class_init, +}; + +static void virtio_register_types(void) +{ + type_register_static(&virtio_keyboard_info); +} + +type_init(virtio_register_types) + diff --git a/tizen/src/hw/maru_virtio_keyboard.h b/tizen/src/hw/maru_virtio_keyboard.h index ba861846f5..9a976b4f14 100644 --- a/tizen/src/hw/maru_virtio_keyboard.h +++ b/tizen/src/hw/maru_virtio_keyboard.h @@ -40,6 +40,8 @@ extern "C" { #include "hw/virtio/virtio.h" #define TYPE_VIRTIO_KEYBOARD "virtio-keyboard-device" +#define VIRTIO_KEYBOARD(obj) \ + OBJECT_CHECK(VirtIOKeyboard, (obj), TYPE_VIRTIO_KEYBOARD) #define VIRTIO_KBD_QUEUE_SIZE 100 typedef struct EmulKbdEvent {