From: sungmin ha Date: Sat, 6 Apr 2013 09:18:15 +0000 (+0900) Subject: virtio-kbd: increased virtio keyboard queue and fixed overwrite bug X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~1024 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e56bd45d640b12437a56c6e569f2308e9d523fac;p=sdk%2Femulator%2Fqemu.git virtio-kbd: increased virtio keyboard queue and fixed overwrite bug Signed-off-by: SungMin Ha --- diff --git a/package/changelog b/package/changelog index 719734301e..c2e2972dec 100644 --- a/package/changelog +++ b/package/changelog @@ -1,3 +1,6 @@ +* 1.5.24 +- increased virtio keyboard queue and fixed overwrite bug +== SungMin Ha 2013-04-06 * 1.5.23 - no need to get the shmkey from another shm == GiWoong Kim 2013-04-03 diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index d46344e0be..0aacd9e840 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,4 +1,4 @@ -Version: 1.5.23 +Version: 1.5.24 Maintainer: Yeong-Kyoon Lee Source: emulator diff --git a/tizen/src/hw/maru_virtio_keyboard.c b/tizen/src/hw/maru_virtio_keyboard.c index 97f4d2a0d2..6cae72f2e7 100644 --- a/tizen/src/hw/maru_virtio_keyboard.c +++ b/tizen/src/hw/maru_virtio_keyboard.c @@ -84,6 +84,14 @@ void virtio_keyboard_notify(void *opaque) while ((written_cnt--)) { kbdevt = &vkbd->kbdqueue.kbdevent[vkbd->kbdqueue.rptr]; + while (((EmulKbdEvent*)(elem.in_sg[index].iov_base))->code != 0) { + if (++index == VIRTIO_KBD_QUEUE_SIZE) { + index--; + TRACE("virtio queue is full.\n"); + break; + } + } + /* Copy keyboard data into guest side. */ TRACE("copy: keycode %d, type %d, elem_index %d\n", kbdevt->code, kbdevt->type, index); @@ -98,6 +106,7 @@ void virtio_keyboard_notify(void *opaque) vkbd->kbdqueue.rptr++; if (vkbd->kbdqueue.rptr == VIRTIO_KBD_QUEUE_SIZE) { vkbd->kbdqueue.rptr = 0; + TRACE("kbdqueue is full.\n"); } } qemu_mutex_unlock(&vkbd->event_mutex); @@ -235,7 +244,7 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev) vkbd->vdev.get_features = virtio_keyboard_get_features; - vkbd->vq = virtio_add_queue(&vkbd->vdev, 64, virtio_keyboard_handle); + vkbd->vq = virtio_add_queue(&vkbd->vdev, 128, virtio_keyboard_handle); vkbd->qdev = dev; /* bottom half */ @@ -243,7 +252,7 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev) /* register keyboard handler */ qemu_add_kbd_event_handler(virtio_keyboard_event, vkbd); - + return &vkbd->vdev; } diff --git a/tizen/src/hw/maru_virtio_keyboard.h b/tizen/src/hw/maru_virtio_keyboard.h index a744760cd8..4cd9b4ce7a 100644 --- a/tizen/src/hw/maru_virtio_keyboard.h +++ b/tizen/src/hw/maru_virtio_keyboard.h @@ -39,7 +39,7 @@ extern "C" { #include "hw/virtio.h" #define VIRTIO_KBD_DEVICE_NAME "virtio-keyboard" -#define VIRTIO_KBD_QUEUE_SIZE 10 +#define VIRTIO_KBD_QUEUE_SIZE 100 typedef struct EmulKbdEvent { uint16_t code;