emulator: fix compile errors on Windows.
[sdk/emulator/qemu.git] / tizen / src / osutil-win32.c
index a2117b3..457279b 100644 (file)
@@ -1,9 +1,9 @@
-/* 
+/*
  * Emulator
  *
  * Copyright (C) 2012, 2013 Samsung Electronics Co., Ltd. All rights reserved.
  *
- * Contact: 
+ * Contact:
  * SeokYeon Hwang <syeon.hwang@samsung.com>
  * MunKyu Im <munkyu.im@samsung.com>
  * GiWoong Kim <giwoong.kim@samsung.com>
 
 MULTI_DEBUG_CHANNEL (emulator, osutil);
 
+
+static qemu_timeval tv = { 0, 0 };
+static time_t ti;
+static char buf_time[64];
+static HANDLE g_hMapFile;
+static char *g_pBuf;
+
 extern char tizen_target_img_path[];
-extern int tizen_base_port;
 
 static const char *pactempfile = ".autoproxy";
 
@@ -95,37 +101,48 @@ void check_vm_lock_os(void)
 
 void make_vm_lock_os(void)
 {
-    HANDLE hMapFile;
-    char *pBuf;
     char *port_in_use;
     char *shared_memory;
+    int base_port;
 
+    base_port = get_emul_vm_base_port();
     shared_memory = g_strdup_printf("%s", tizen_target_img_path);
-    port_in_use =  g_strdup_printf("%d", tizen_base_port);
-    hMapFile = CreateFileMapping(
+    port_in_use =  g_strdup_printf("%d", base_port);
+    g_hMapFile = CreateFileMapping(
                  INVALID_HANDLE_VALUE, /* use paging file */
                  NULL,                 /* default security */
                  PAGE_READWRITE,       /* read/write access */
                  0,                /* maximum object size (high-order DWORD) */
                  50,               /* maximum object size (low-order DWORD) */
                  port_in_use);         /* name of mapping object */
-    if (hMapFile == NULL) {
+    if (g_hMapFile == NULL) {
         ERR("Could not create file mapping object (%d).\n", GetLastError());
         return;
     }
-    pBuf = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 50);
 
-    if (pBuf == NULL) {
+    g_pBuf = MapViewOfFile(g_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 50);
+    if (g_pBuf == NULL) {
         ERR("Could not map view of file (%d).\n", GetLastError());
-        CloseHandle(hMapFile);
+        CloseHandle(g_hMapFile);
         return;
     }
 
-    CopyMemory((PVOID)pBuf, shared_memory, strlen(shared_memory));
+    CopyMemory((PVOID)g_pBuf, shared_memory, strlen(shared_memory));
     free(port_in_use);
     free(shared_memory);
 }
 
+void remove_vm_lock_os(void)
+{
+    if (g_pBuf != NULL) {
+        UnmapViewOfFile(g_pBuf);
+    }
+    if (g_hMapFile != NULL) {
+        CloseHandle(g_hMapFile);
+    }
+}
+
+
 void set_bin_path_os(gchar * exec_argv)
 {
     gchar link_path[PATH_MAX] = { 0, };
@@ -141,6 +158,23 @@ void set_bin_path_os(gchar * exec_argv)
     g_strlcat(bin_path, "\\", PATH_MAX);
 }
 
+int get_number_of_processors(void)
+{
+    SYSTEM_INFO sysi;
+    int num_processors = 0;
+
+    GetSystemInfo(&sysi);
+    TRACE("Processor type: %d, Core number: %d\n",
+        sysi.dwProcessorType, sysi.dwNumberOfProcessors);
+
+    num_processors = sysi.dwNumberOfProcessors;
+    if (num_processors < 1) {
+        num_processors = 1;
+    }
+
+    return num_processors;
+}
+
 void print_system_info_os(void)
 {
     INFO("* Windows\n");
@@ -163,9 +197,12 @@ void print_system_info_os(void)
     SYSTEM_INFO sysi;
     ZeroMemory(&sysi, sizeof(SYSTEM_INFO));
 
+#if 0
     GetSystemInfo(&sysi);
     INFO("* Processor type : %d, Number of processors : %d\n",
             sysi.dwProcessorType, sysi.dwNumberOfProcessors);
+#endif
+    get_number_of_processors();
 
     MEMORYSTATUSEX memInfo;
     memInfo.dwLength = sizeof(MEMORYSTATUSEX);
@@ -174,6 +211,18 @@ void print_system_info_os(void)
             memInfo.ullTotalPhys / 1024, memInfo.ullAvailPhys / 1024);
 }
 
+char *get_timeofday(void)
+{
+    qemu_gettimeofday(&tv);
+    ti = tv.tv_sec;
+
+    struct tm *ptm = localtime(&ti);
+    strftime(buf_time, sizeof(buf_time),
+             "%H:%M:%S", ptm);
+
+    return buf_time;
+}
+
 static int get_auto_proxy(BYTE *url, char *http_proxy, char *https_proxy, char *ftp_proxy, char *socks_proxy)
 {
     char type[MAXLEN];
@@ -216,7 +265,7 @@ static int get_auto_proxy(BYTE *url, char *http_proxy, char *https_proxy, char *
             ERR("pac file is not wrong! It could be the wrong pac address or pac file format\n");
             fclose(fp_pacfile);
         }
-    } 
+    }
     else {
         ERR("fail to get pacfile fp\n");
         return -1;
@@ -263,7 +312,7 @@ void get_host_proxy_os(char *http_proxy, char *https_proxy, char *ftp_proxy, cha
             lRet = RegQueryValueEx(hKey, "AutoConfigURL", 0, NULL, url, &dwLength);
             if (lRet == ERROR_SUCCESS && dwLength != 0) {
                 get_auto_proxy(url, http_proxy, https_proxy, ftp_proxy, socks_proxy);
-                RegCloseKey(hKey);      
+                RegCloseKey(hKey);
                 return 0;
             }
         }
@@ -293,7 +342,7 @@ void get_host_proxy_os(char *http_proxy, char *https_proxy, char *ftp_proxy, cha
     }
     if (*(char*)proxyenable == 0) {
         free(proxyenable);
-        RegCloseKey(hKey);      
+        RegCloseKey(hKey);
         return 0;
     }
 
@@ -302,14 +351,14 @@ void get_host_proxy_os(char *http_proxy, char *https_proxy, char *ftp_proxy, cha
     if (lRet != ERROR_SUCCESS && dwLength == 0) {
         ERR("Failed to query value from from %s\n",
                 "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings");
-        RegCloseKey(hKey);      
+        RegCloseKey(hKey);
         return 0;
     }
 
     proxyserver = (BYTE*)malloc(dwLength);
     if (proxyserver == NULL) {
         ERR( "Failed to allocate a buffer\n");
-        RegCloseKey(hKey);      
+        RegCloseKey(hKey);
         return 0;
     }
 
@@ -322,11 +371,11 @@ void get_host_proxy_os(char *http_proxy, char *https_proxy, char *ftp_proxy, cha
         RegCloseKey(hKey);
         return 0;
     }
-    
+
     if((char*)proxyserver != NULL) {
         INFO("proxy value: %s\n", (char*)proxyserver);
         real_proxy = malloc(MAXLEN);
-        
+
         for(p = strtok((char*)proxyserver, ";"); p; p = strtok(NULL, ";")){
             if(strstr(p, HTTP_PROTOCOL)) {
                 remove_string(p, real_proxy, HTTP_PROTOCOL);