emulator: fix virtio-keyboard crash on 64 bit and some code clean-up
authorsyeon.hwang <syeon.hwang@samsung.com>
Thu, 10 Jan 2013 08:47:41 +0000 (17:47 +0900)
committersyeon.hwang <syeon.hwang@samsung.com>
Thu, 10 Jan 2013 08:47:41 +0000 (17:47 +0900)
remove some dangerous code on 64bit in mloop-event.c
fix some compilation warnings - mloop_event.c, sdb.h, virtio.h

Signed-off-by: SeokYeon Hwang <syeon.hwang@samsung.com>
hw/virtio.h
tizen/src/hw/maru_codec.c
tizen/src/hw/maru_virtio_esm.h
tizen/src/hw/maru_virtio_keyboard.c
tizen/src/hw/maru_virtio_keyboard.h
tizen/src/hw/maru_virtio_touchscreen.h
tizen/src/mloop_event.c
tizen/src/sdb.h
tizen/src/skin/maruskin_server.h

index 6cd7b9e..1a33b4c 100644 (file)
@@ -218,12 +218,9 @@ void virtio_scsi_exit(VirtIODevice *vdev);
 
 /* Maru devices */
 #ifdef CONFIG_MARU
-VirtIODevice *maru_virtio_touchscreen_init(DeviceState *dev);
-void maru_virtio_touchscreen_exit(VirtIODevice *vdev);
-VirtIODevice *virtio_esm_init(DeviceState *dev);
-void virtio_esm_exit(VirtIODevice *vdev);
-VirtIODevice *virtio_keyboard_init(DeviceState *dev);
-void virtio_keyboard_exit(VirtIODevice *vdev);
+#include "tizen/src/hw/maru_virtio_touchscreen.h"
+#include "tizen/src/hw/maru_virtio_keyboard.h"
+#include "tizen/src/hw/maru_virtio_esm.h"
 #endif
 
 
index 3860314..569571a 100644 (file)
@@ -663,13 +663,10 @@ int qemu_avcodec_close(SVCodecState *s, int ctx_index)
 /* AVCodecContext* avcodec_alloc_context (void) */
 int qemu_avcodec_alloc_context(SVCodecState *s)
 {
-    off_t offset;
     int index;
 
     TRACE("[%s] Enter\n", __func__);
 
-    offset = s->codec_param.mmap_offset;
-
     for (index = 0; index < CODEC_CONTEXT_MAX; index++) {
         if (s->codec_ctx[index].avctx_use == false) {
             TRACE("Succeeded to get %d of context.\n", index);
@@ -1376,12 +1373,11 @@ uint64_t codec_read(void *opaque, target_phys_addr_t addr, unsigned size)
 void codec_write(void *opaque, target_phys_addr_t addr,
                 uint64_t value, unsigned size)
 {
-    int ret = -1;
     SVCodecState *s = (SVCodecState *)opaque;
 
     switch (addr) {
     case CODEC_CMD_API_INDEX:
-        ret = codec_operate(value, s->codec_param.ctx_index, s);
+        codec_operate(value, s->codec_param.ctx_index, s);
         break;
     case CODEC_CMD_CONTEXT_INDEX:
         s->codec_param.ctx_index = value;
index 987ea9a..75e3db7 100644 (file)
  */
 
 #ifndef MARU_VIRTIO_ESM_H_
-#define MARU_VIRTIO_ESM_H__
+#define MARU_VIRTIO_ESM_H_
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#include "hw.h"
-#include "virtio.h"
+#include "hw/virtio.h"
 
 VirtIODevice *virtio_esm_init(DeviceState *dev);
 
index d767e8b..8711b6b 100644 (file)
@@ -27,7 +27,6 @@
  *
  */
 
-#include "console.h"
 #include "mloop_event.h"
 #include "maru_device_ids.h"
 #include "maru_virtio_keyboard.h"
 
 MULTI_DEBUG_CHANNEL(qemu, virtio-kbd);
 
-#define VIRTIO_KBD_DEVICE_NAME "virtio-keyboard"
-#define VIRTIO_KBD_QUEUE_SIZE  10
-
-typedef struct EmulKbdEvent {
-    uint16_t code;
-    uint16_t type;
-} EmulKbdEvent;
-
-typedef struct VirtIOKbdQueue {
-    EmulKbdEvent kbdevent[VIRTIO_KBD_QUEUE_SIZE];
-    int index;
-    int rptr, wptr;
-} VirtIOKbdQueue;
-
-typedef struct VirtIOKeyboard {
-    VirtIODevice    vdev;
-    VirtQueue       *vq;
-    DeviceState     *qdev;
-    uint16_t        extension_key;
-
-    VirtIOKbdQueue  kbdqueue;
-    QemuMutex       event_mutex;
-} VirtIOKeyboard;
-
 VirtQueueElement elem;
 
 static void virtio_keyboard_handle(VirtIODevice *vdev, VirtQueue *vq)
index 6d3c441..26f6146 100644 (file)
 extern "C" {
 #endif
 
-#include "hw.h"
-#include "virtio.h"
+#include "qemu-thread.h"
+#include "hw/virtio.h"
+
+#define VIRTIO_KBD_DEVICE_NAME "virtio-keyboard"
+#define VIRTIO_KBD_QUEUE_SIZE  10
+
+typedef struct EmulKbdEvent {
+    uint16_t code;
+    uint16_t type;
+} EmulKbdEvent;
+
+typedef struct VirtIOKbdQueue {
+    EmulKbdEvent kbdevent[VIRTIO_KBD_QUEUE_SIZE];
+    int index;
+    int rptr, wptr;
+} VirtIOKbdQueue;
+
+typedef struct VirtIOKeyboard {
+    VirtIODevice    vdev;
+    VirtQueue       *vq;
+    DeviceState     *qdev;
+    uint16_t        extension_key;
+
+    VirtIOKbdQueue  kbdqueue;
+    QemuMutex       event_mutex;
+} VirtIOKeyboard;
 
 VirtIODevice *virtio_keyboard_init(DeviceState *dev);
 
index f54d733..2e1101b 100644 (file)
@@ -30,7 +30,8 @@
 #ifndef MARU_TOUCHSCREEN_H_
 #define MARU_TOUCHSCREEN_H_
 
-#include "virtio.h"
+#include "console.h"
+#include "hw/virtio.h"
 
 typedef struct TouchscreenState
 {
index 685deef..9561408 100644 (file)
 #include "pci.h"
 #include "sysemu.h"
 
+#include "guest_debug.h"
+#include "skin/maruskin_server.h"
+#include "hw/maru_virtio_touchscreen.h"
+#include "hw/maru_virtio_keyboard.h"
+
 MULTI_DEBUG_CHANNEL(qemu, mloop_event);
 
 struct mloop_evsock {
@@ -186,7 +191,7 @@ static int mloop_evsock_send(struct mloop_evsock *ev, struct mloop_evpack *p)
     }
 
     do {
-        ret = send(ev->sockno, p, ntohs(p->size), 0);
+        ret = send(ev->sockno, p, p->size, 0);
 #ifdef _WIN32
     } while (ret == -1 && (WSAGetLastError() == WSAEWOULDBLOCK));
 #else
@@ -431,9 +436,6 @@ static void mloop_evcb_recv(struct mloop_evsock *ev)
         return;
     }
 
-    pack.type = ntohs(pack.type);
-    pack.size = ntohs(pack.size);
-
     switch (pack.type) {
     case MLOOP_EVTYPE_USB_ADD:
         mloop_evhandle_usb_add(pack.data);
@@ -442,10 +444,10 @@ static void mloop_evcb_recv(struct mloop_evsock *ev)
         mloop_evhandle_usb_del(pack.data);
         break;
     case MLOOP_EVTYPE_INTR_UP:
-        mloop_evhandle_intr_up(ntohl(*(long*)&pack.data[0]));
+        mloop_evhandle_intr_up(*(long*)&pack.data[0]);
         break;
     case MLOOP_EVTYPE_INTR_DOWN:
-        mloop_evhandle_intr_down(ntohl(*(long*)&pack.data[0]));
+        mloop_evhandle_intr_down(*(long*)&pack.data[0]);
         break;
     case MLOOP_EVTYPE_HWKEY:
         mloop_evhandle_hwkey(&pack);
@@ -454,7 +456,7 @@ static void mloop_evcb_recv(struct mloop_evsock *ev)
         mloop_evhandle_touch(&pack);
         break;
     case MLOOP_EVTYPE_KEYBOARD:
-        mloop_evhandle_keyboard(ntohl(*(long*)&pack.data[0]));
+        mloop_evhandle_keyboard(*(uint64_t*)&pack.data[0]);
         break;
 #ifdef TARGET_I386
     case MLOOP_EVTYPE_KBD_ADD:
@@ -490,9 +492,9 @@ void mloop_evcmd_raise_intr(void *irq)
 {
     struct mloop_evpack pack;
     memset((void*)&pack, 0, sizeof(struct mloop_evpack));
-    pack.type = htons(MLOOP_EVTYPE_INTR_UP);
-    pack.size = htons(8);
-    *(long*)&pack.data[0] = htonl((long)irq);
+    pack.type = MLOOP_EVTYPE_INTR_UP;
+    pack.size = 8;
+    *(long*)&pack.data[0] = (long)irq;
     mloop_evsock_send(&mloop, &pack);
 }
 
@@ -500,17 +502,17 @@ void mloop_evcmd_lower_intr(void *irq)
 {
     struct mloop_evpack pack;
     memset((void*)&pack, 0, sizeof(struct mloop_evpack));
-    pack.type = htons(MLOOP_EVTYPE_INTR_DOWN);
-    pack.size = htons(8);
-    *(long*)&pack.data[0] = htonl((long)irq);
+    pack.type = MLOOP_EVTYPE_INTR_DOWN;
+    pack.size = 8;
+    *(long*)&pack.data[0] = (long)irq;
     mloop_evsock_send(&mloop, &pack);
 }
 
 void mloop_evcmd_usbkbd(int on)
 {
-    struct mloop_evpack pack = { htons(MLOOP_EVTYPE_USB_ADD), htons(13), "keyboard" };
+    struct mloop_evpack pack = { MLOOP_EVTYPE_USB_ADD, 13, "keyboard" };
     if (on == 0) {
-        pack.type = htons(MLOOP_EVTYPE_USB_DEL);
+        pack.type = MLOOP_EVTYPE_USB_DEL;
     }
     mloop_evsock_send(&mloop, &pack);
 }
@@ -518,9 +520,9 @@ void mloop_evcmd_usbkbd(int on)
 void mloop_evcmd_hostkbd(int on)
 {
     struct mloop_evpack pack
-        = {htons(MLOOP_EVTYPE_KBD_ADD), htons(13), "keyboard"};
+        = {MLOOP_EVTYPE_KBD_ADD, 13, "keyboard"};
     if (on == 0) {
-        pack.type = htons(MLOOP_EVTYPE_KBD_DEL);
+        pack.type = MLOOP_EVTYPE_KBD_DEL;
     }
     mloop_evsock_send(&mloop, &pack);
 }
@@ -537,11 +539,11 @@ void mloop_evcmd_usbdisk(char *img)
             return;
         }
 
-        pack.type = htons(MLOOP_EVTYPE_USB_ADD);
-        pack.size = htons(5 + sprintf(pack.data, "disk:%s", img));
+        pack.type = MLOOP_EVTYPE_USB_ADD;
+        pack.size = 5 + sprintf(pack.data, "disk:%s", img);
     } else {
-        pack.type = htons(MLOOP_EVTYPE_USB_DEL);
-        pack.size = htons(5 + sprintf(pack.data, "disk:"));
+        pack.type = MLOOP_EVTYPE_USB_DEL;
+        pack.size = 5 + sprintf(pack.data, "disk:");
     }
 
     mloop_evsock_send(&mloop, &pack);
@@ -576,8 +578,8 @@ void mloop_evcmd_hwkey(int event_type, int keycode)
 {
     struct mloop_evpack pack;
 
-    pack.type = htons(MLOOP_EVTYPE_HWKEY);
-    pack.size = htons(5 + 8); //TODO: ?
+    pack.type = MLOOP_EVTYPE_HWKEY;
+    pack.size = 5 + 8; //TODO: ?
 
     memcpy(pack.data, &event_type, sizeof(int));
     memcpy(pack.data + sizeof(int), &keycode, sizeof(int));
@@ -590,8 +592,8 @@ void mloop_evcmd_touch(void)
     struct mloop_evpack pack;
     memset(&pack, 0, sizeof(struct mloop_evpack));
 
-    pack.type = htons(MLOOP_EVTYPE_TOUCH);
-    pack.size = htons(5);
+    pack.type = MLOOP_EVTYPE_TOUCH;
+    pack.size = 5;
     mloop_evsock_send(&mloop, &pack);
 }
 
@@ -600,9 +602,9 @@ void mloop_evcmd_keyboard(void *data)
     struct mloop_evpack pack;
     memset(&pack, 0, sizeof(struct mloop_evpack));
 
-    pack.type = htons(MLOOP_EVTYPE_KEYBOARD);
-    pack.size = htons(8);
-    *(long*)&pack.data[0] = htonl((long)data);
+    pack.type = MLOOP_EVTYPE_KEYBOARD;
+    pack.size = 4 + 8;
+    *((VirtIOKeyboard **)pack.data) = (VirtIOKeyboard *)data;
     mloop_evsock_send(&mloop, &pack);
 }
 
@@ -611,8 +613,8 @@ void mloop_evcmd_ramdump(void)
     struct mloop_evpack pack;
     memset(&pack, 0, sizeof(struct mloop_evpack));
 
-    pack.type = htons(MLOOP_EVTYPE_RAMDUMP);
-    pack.size = htons(5);
+    pack.type = MLOOP_EVTYPE_RAMDUMP;
+    pack.size = 5;
     mloop_evsock_send(&mloop, &pack);
 }
 
index 218d36d..3a413a3 100644 (file)
@@ -112,5 +112,4 @@ void socket_close(int fd);
 void notify_sdb_daemon_start(void);
 int check_port_bind_listen(uint32_t port);
 int sdb_loopback_client(int port, int type);
-int check_port_bind_listen(uint32_t port);
 
index 0b2488a..ee5e13a 100644 (file)
@@ -34,7 +34,7 @@ int start_skin_server(int argc, char** argv, int qemu_argc, char** qemu_argv);
 void shutdown_skin_server(void);
 
 void notify_sensor_daemon_start(void);
-void notify_ramdump_complete(void);
+void notify_ramdump_completed(void);
 void notify_booting_progress(int progress_value);
 int is_ready_skin_server(void);
 int get_skin_server_port(void);