Merge 'qemu 1.5.1' into tizen_qemu_1.5.1
[sdk/emulator/qemu.git] / qemu-char.c
index efe706d..3319b85 100644 (file)
@@ -1642,9 +1642,22 @@ static int win_chr_init(CharDriverState *chr, const char *filename)
         fprintf(stderr, "Failed CreateEvent\n");
         goto fail;
     }
-
-    s->hcom = CreateFile(filename, GENERIC_READ|GENERIC_WRITE, 0, NULL,
+#ifndef CONFIG_MARU
+    s->hcom = CreateFile(filename,
+                      GENERIC_READ|GENERIC_WRITE, 0, NULL,
                       OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
+#else
+       int open_flags = O_BINARY | O_RDWR;
+       // TODO : FILE_FLAG_OVERLAPPED
+
+       int ret = qemu_open(filename, open_flags, 0644);
+       if (ret < 0) {
+               error_report("win_chr_init failed(%d) \n", ret);
+               return -errno;
+       }
+       s->hcom = (HANDLE)_get_osfhandle(ret);
+
+#endif
     if (s->hcom == INVALID_HANDLE_VALUE) {
         fprintf(stderr, "Failed CreateFile (%lu)\n", GetLastError());
         s->hcom = NULL;
@@ -1919,6 +1932,36 @@ static CharDriverState *qemu_chr_open_win_con(void)
     return qemu_chr_open_win_file(GetStdHandle(STD_OUTPUT_HANDLE));
 }
 
+<<<<<<< HEAD
+static CharDriverState *qemu_chr_open_win_file_out(QemuOpts *opts)
+{
+    const char *file_out = qemu_opt_get(opts, "path");
+    HANDLE fd_out;
+
+#ifndef CONFIG_MARU
+    fd_out = CreateFile(file_out, GENERIC_WRITE, FILE_SHARE_READ, NULL,
+                        OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#else
+       int open_flags = O_BINARY | O_RDWR | O_CREAT | O_TRUNC;
+
+       int ret = qemu_open(file_out, open_flags, 0644);
+       if (ret < 0) {
+               error_report("qemu_chr_open_win_file_out failed(%d) \n", ret);
+               return -errno;
+       }
+       fd_out = (HANDLE)_get_osfhandle(ret);
+
+#endif
+
+    if (fd_out == INVALID_HANDLE_VALUE) {
+        return NULL;
+    }
+
+    return qemu_chr_open_win_file(fd_out);
+}
+
+=======
+>>>>>>> test1.5
 static int win_stdio_write(CharDriverState *chr, const uint8_t *buf, int len)
 {
     HANDLE  hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);