From: munkyu.im Date: Mon, 14 Oct 2013 07:06:13 +0000 (+0900) Subject: shm: fix shared memory leak X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~695 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0f88b12aeb06ade315fdfe1679affe68caa50d9d;p=sdk%2Femulator%2Fqemu.git shm: fix shared memory leak There was a shared memory leak when exit emulator. So clear it. Change-Id: I31f0f030f5e0f88a054547e4df064705898921c1 Signed-off-by: munkyu.im --- diff --git a/tizen/src/emulator.c b/tizen/src/emulator.c index 826cb4ccb7..7850cd9925 100644 --- a/tizen/src/emulator.c +++ b/tizen/src/emulator.c @@ -57,7 +57,7 @@ #ifdef CONFIG_SDL #include #endif -#ifdef CONFIG_LINUX +#if defined(CONFIG_LINUX) || defined(CONFIG_DARWIN) #include #include extern int g_shmid; @@ -116,8 +116,7 @@ void exit_emulator(void) shutdown_guest_server(); stop_ecs(); -#ifdef CONFIG_LINUX - /* clean up the vm lock memory by munkyu */ +#if defined(CONFIG_LINUX) || defined(CONFIG_DARWIN) if (shmctl(g_shmid, IPC_RMID, 0) == -1) { ERR("shmctl failed\n"); perror("emulator.c: "); diff --git a/tizen/src/osutil-darwin.c b/tizen/src/osutil-darwin.c index c5225fa64b..f39ba632ee 100644 --- a/tizen/src/osutil-darwin.c +++ b/tizen/src/osutil-darwin.c @@ -52,6 +52,7 @@ MULTI_DEBUG_CHANNEL(qemu, osutil); +int g_shmid; extern char tizen_target_img_path[]; CFDictionaryRef proxySettings; @@ -84,24 +85,23 @@ void check_vm_lock_os(void) void make_vm_lock_os(void) { - int shmid; char *shared_memory; int base_port; base_port = get_emul_vm_base_port(); - shmid = shmget((key_t)base_port, MAXLEN, 0666|IPC_CREAT); - if (shmid == -1) { + g_shmid = shmget((key_t)base_port, MAXLEN, 0666|IPC_CREAT); + if (g_shmid == -1) { ERR("shmget failed\n"); perror("osutil-darwin: "); return; } - shared_memory = shmat(shmid, (char *)0x00, 0); + shared_memory = shmat(g_shmid, (char *)0x00, 0); if (shared_memory == (void *)-1) { ERR("shmat failed\n"); perror("osutil-darwin: "); return; } - sprintf(shared_memory, "%s", tizen_target_img_path); + g_sprintf(shared_memory, "%s", tizen_target_img_path); INFO("shared memory key: %d, value: %s\n", base_port, (char *)shared_memory); if (shmdt(shared_memory) == -1) {