virtio-keyboard: modified for 1.5.1 upgrade
authorsungmin ha <sungmin82.ha@samsung.com>
Tue, 9 Jul 2013 09:08:34 +0000 (18:08 +0900)
committersungmin ha <sungmin82.ha@samsung.com>
Tue, 9 Jul 2013 09:08:34 +0000 (18:08 +0900)
Change-Id: I8e04c569750c16f3e819941974ba2f67f870c197
Signed-off-by: Sungmin Ha <sungmin82.ha@samsung.com>
tizen/src/hw/maru_virtio_keyboard.c
tizen/src/hw/maru_virtio_keyboard.h

index 98d017badbf0b0d65458f3f5ac907d6106fdb733..30f559faaae1c529b00ad91e8bb353d6c27fa2c2 100644 (file)
@@ -223,9 +223,10 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev)
     VirtIOKeyboard *vkbd;
     INFO("initialize virtio-keyboard device\n");
 
-    vkbd = (VirtIOKeyboard *)virtio_common_init(VIRTIO_KBD_DEVICE_NAME,
-            VIRTIO_ID_KEYBOARD, 0, sizeof(VirtIOKeyboard));
-    if (vkbd == NULL) {
+    vkbd = g_malloc0(sizeof(VirtIOKeyboard));
+    virtio_init(&vkbd->vdev, TYPE_VIRTIO_KEYBOARD, VIRTIO_ID_KEYBOARD, 0);
+
+    if (&vkbd->vdev == NULL) {
         ERR("failed to initialize device\n");
         return NULL;
     }
@@ -234,8 +235,8 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev)
     vkbd->extension_key = 0;
     qemu_mutex_init(&vkbd->event_mutex);
 
-
-    vkbd->vdev.get_features = virtio_keyboard_get_features;
+    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;
 
@@ -243,7 +244,7 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev)
     vkbd->bh = qemu_bh_new(virtio_keyboard_bh, vkbd);
 
     /* register keyboard handler */
-    qemu_add_kbd_event_handler(virtio_keyboard_event, vkbd);
+    vkbd->eh_entry = qemu_add_kbd_event_handler(virtio_keyboard_event, vkbd);
  
     return &vkbd->vdev;
 }
@@ -253,7 +254,7 @@ void virtio_keyboard_exit(VirtIODevice *vdev)
     VirtIOKeyboard *vkbd = (VirtIOKeyboard *)vdev;
     INFO("destroy device\n");
 
-    qemu_remove_kbd_event_handler();
+    qemu_remove_kbd_event_handler(vkbd->eh_entry);
 
     if (vkbd->bh) {
         qemu_bh_delete(vkbd->bh);
index 17aa0bd3e8ac136933776abf175e0aadb9021df0..ba861846f56f9f8db1c5414cb3f18dbb4f9436b0 100644 (file)
@@ -36,6 +36,7 @@ extern "C" {
 #endif
 
 #include "qemu/thread.h"
+#include "ui/console.h"
 #include "hw/virtio/virtio.h"
 
 #define TYPE_VIRTIO_KEYBOARD "virtio-keyboard-device"
@@ -61,6 +62,7 @@ typedef struct VirtIOKeyboard {
     VirtIOKbdQueue  kbdqueue;
     QemuMutex       event_mutex;
     QEMUBH          *bh;
+    QEMUPutKbdEntry *eh_entry;
 } VirtIOKeyboard;
 
 VirtIODevice *virtio_keyboard_init(DeviceState *dev);