printk(log_level "%s: " fmt, DRIVER_NAME, ##__VA_ARGS__)
#define KBD_BUF_SIZE 100
+static int vqidx = 0;
struct EmulKbdEvent
{
static void vq_keyboard_handle(struct virtqueue *vq)
{
int err = 0, len = 0;
- int index = 0;
void *data;
struct EmulKbdEvent kbdevent;
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
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");
+* 1.4.19
+- modified process of using virtio keyboard queue
+== Sungmin Ha <sungmin82.ha@samsung.com> 2013-05-14
* 1.4.18
- increased virtio keyboard queue
== Sungmin Ha <sungmin82.ha@samsung.com> 2013-04-06