emulator: fix legacy arguments compatibility issue 68/23068/3
authorSeokYeon Hwang <syeon.hwang@samsung.com>
Tue, 17 Jun 2014 04:40:08 +0000 (13:40 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Tue, 17 Jun 2014 10:57:36 +0000 (19:57 +0900)
Fix legacy arguments compatibility issue.
Fix memory break related with RAM preallocation.

Change-Id: Ia43f1367a8910f9bf52383ac703123c9998c2f06
Signed-off-by: SeokYeon Hwang <syeon.hwang@samsung.com>
tizen/src/emulator.c
tizen/src/emulator_legacy.c
util/oslib-posix.c
util/oslib-win32.c
vl.c

index 1d08894cf92400c919d2305b7025fc8277472e16..4e43cac90d30ef9a6dde2b2924ab1b3805c50721 100644 (file)
@@ -73,10 +73,10 @@ char tizen_target_img_path[PATH_MAX];
 int enable_yagl = 0;
 int enable_spice = 0;
 
-static int _skin_argc;
-static char **_skin_argv;
-static int _qemu_argc;
-static char **_qemu_argv;
+int _skin_argc;
+char **_skin_argv;
+int _qemu_argc;
+char **_qemu_argv;
 
 const char *get_log_path(void)
 {
index 132d43ff150f75a5c4f0d80ad8051f2cc05209e1..e8304eb9f5ef9b1e8d613b044f45d072cf18c782 100644 (file)
@@ -83,10 +83,10 @@ extern char tizen_target_img_path[PATH_MAX];
 extern int enable_yagl;
 extern int enable_spice;
 
-static int _skin_argc;
-static char **_skin_argv;
-static int _qemu_argc;
-static char **_qemu_argv;
+extern int _skin_argc;
+extern char **_skin_argv;
+extern int _qemu_argc;
+extern char **_qemu_argv;
 
 static void set_bin_path(gchar * exec_argv)
 {
index 11ff7e2fba82066d73b9209469210f7af50432b0..c2bd47c2fbfa193ef6af4f12bb3e20dc9dc698b9 100644 (file)
@@ -141,13 +141,17 @@ void *qemu_memalign(size_t alignment, size_t size)
 
 #ifdef CONFIG_MARU
 void *preallocated_ram_ptr = NULL;
+int preallocated_ram_size = -1;
 #endif
 /* alloc shared memory pages */
 void *qemu_anon_ram_alloc(size_t size)
 {
 #ifdef CONFIG_MARU
-    if (preallocated_ram_ptr) {
-        return preallocated_ram_ptr;
+    if (size == preallocated_ram_size && preallocated_ram_ptr) {
+        void *ptr = preallocated_ram_ptr;
+        preallocated_ram_ptr = NULL;
+        preallocated_ram_size = -1;
+        return ptr;
     }
 #endif
     size_t align = QEMU_VMALLOC_ALIGN;
index e03c9fe6ca715e21053bab49b45f69b6d43bf3e0..fed8de3896c535bf401d979cfabde70e49122601 100644 (file)
@@ -172,6 +172,7 @@ void *qemu_memalign(size_t alignment, size_t size)
 
 #ifdef CONFIG_MARU
 void *preallocated_ram_ptr = NULL;
+int preallocated_ram_size = -1;
 #endif
 void *qemu_anon_ram_alloc(size_t size)
 {
@@ -181,8 +182,11 @@ void *qemu_anon_ram_alloc(size_t size)
        has 64Kb granularity, but at least it guarantees us that the
        memory is page aligned. */
 #ifdef CONFIG_MARU
-    if (preallocated_ram_ptr) {
-        return preallocated_ram_ptr;
+    if (size == preallocated_ram_size && preallocated_ram_ptr) {
+        void *ptr = preallocated_ram_ptr;
+        preallocated_ram_ptr = NULL;
+        preallocated_ram_size = -1;
+        return ptr;
     }
 #endif
     ptr = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
diff --git a/vl.c b/vl.c
index e424fe82a676711c1fba17557b15a009f24bd4fa..0c0b337ad4a99d808fc5f3610484999d07a84f1c 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -2990,6 +2990,7 @@ int use_qemu_display = 0; //0:use tizen qemu sdl, 1:use original qemu sdl
 
 // W/A for preserve larger continuous heap for RAM.
 extern void *preallocated_ram_ptr;
+extern int preallocated_ram_size;
 #endif
 
 int main(int argc, char **argv, char **envp)
@@ -4082,6 +4083,9 @@ int main(int argc, char **argv, char **envp)
 
 #if defined(CONFIG_MARU)
     preallocated_ram_ptr = qemu_anon_ram_alloc(ram_size);
+    if (preallocated_ram_ptr) {
+        preallocated_ram_size = ram_size;
+    }
 
     kernel_cmdline = qemu_opt_get(qemu_get_machine_opts(), "append");
     // Returned variable points different address from input variable.