From 0ac050bbd3913d3e2a49883b5ccdc014c9a6bbfe Mon Sep 17 00:00:00 2001 From: sungmin ha Date: Tue, 14 May 2013 16:37:51 +0900 Subject: [PATCH] virtio-keyboard: modified process of using virtio keyboard queue Signed-off-by: Sungmin Ha --- drivers/maru/maru_virtio_keyboard.c | 17 ++++++++--------- package/changelog | 3 +++ package/pkginfo.manifest | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/maru/maru_virtio_keyboard.c b/drivers/maru/maru_virtio_keyboard.c index a8e4fbf746ba..b1f8e256f3da 100644 --- a/drivers/maru/maru_virtio_keyboard.c +++ b/drivers/maru/maru_virtio_keyboard.c @@ -48,6 +48,7 @@ MODULE_DESCRIPTION("Emulator Virtio Keyboard Driver"); printk(log_level "%s: " fmt, DRIVER_NAME, ##__VA_ARGS__) #define KBD_BUF_SIZE 100 +static int vqidx = 0; struct EmulKbdEvent { @@ -77,7 +78,6 @@ static struct virtio_device_id id_table[] = { static void vq_keyboard_handle(struct virtqueue *vq) { int err = 0, len = 0; - int index = 0; void *data; struct EmulKbdEvent kbdevent; @@ -88,13 +88,10 @@ static void vq_keyboard_handle(struct virtqueue *vq) return; } - while (index < KBD_BUF_SIZE) { - memcpy(&kbdevent, &vkbd->kbdevt[index], sizeof(kbdevent)); - printk(KERN_ERR "from qemu code = %d, value = %d\n", kbdevent.code, kbdevent.value); - + while (1) { + memcpy(&kbdevent, &vkbd->kbdevt[vqidx], sizeof(kbdevent)); #if 1 if (kbdevent.code == 0) { - index++; break; } #endif @@ -102,10 +99,12 @@ static void vq_keyboard_handle(struct virtqueue *vq) input_event(vkbd->idev, EV_KEY, kbdevent.code, kbdevent.value); input_sync(vkbd->idev); printk(KERN_ERR "input_event code = %d, value = %d\n", kbdevent.code, kbdevent.value); - memset(&vkbd->kbdevt[index], 0x00, sizeof(kbdevent)); - index++; + memset(&vkbd->kbdevt[vqidx], 0x00, sizeof(kbdevent)); + vqidx++; + if (vqidx == KBD_BUF_SIZE) { + vqidx = 0; + } } - err = virtqueue_add_buf (vq, vkbd->sg, 0, KBD_BUF_SIZE, (void *)KBD_BUF_SIZE, GFP_ATOMIC); if (err < 0) { VKBD_LOG(KERN_ERR, "failed to add buffer to virtqueue.\n"); diff --git a/package/changelog b/package/changelog index 55aa5ebc6df6..8d2cd5b1be8e 100644 --- a/package/changelog +++ b/package/changelog @@ -1,3 +1,6 @@ +* 1.4.19 +- modified process of using virtio keyboard queue +== Sungmin Ha 2013-05-14 * 1.4.18 - increased virtio keyboard queue == Sungmin Ha 2013-04-06 diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index 0dde5514800d..901587676425 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,4 +1,4 @@ -Version: 1.4.18 +Version: 1.4.19 Maintainer: Yeong-Kyoon, Lee Source: emulator-kernel -- 2.34.1