osutil: minor refactoring on vm_lock
authorSangho Park <sangho.p@samsung.com>
Mon, 1 Feb 2016 06:03:53 +0000 (15:03 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Thu, 11 Feb 2016 04:54:09 +0000 (13:54 +0900)
* Remove assertion on remove vm_lock because lock_file can be
  INVALID_HANDLE_VALUE or -1
* Add assertion on locking vm
* Remove redundant g_strdup()

Change-Id: Ica262b8522aeec26561e5f06b46295b48159b307
Signed-off-by: Sangho Park <sangho.p@samsung.com>
tizen/src/util/osutil-win32.c
tizen/src/util/osutil.c

index 388d7dfa055d6b1e2238fc8fc64f6123c96b7ae8..a19bf7554177cda954acd2ced2c2822dbacacb41 100644 (file)
@@ -48,7 +48,7 @@
 #include "new_debug_ch.h"
 DECLARE_DEBUG_CHANNEL(osutil);
 
-static char *lock_filename;
+static char *lock_filename = NULL;
 static HANDLE lock_file = INVALID_HANDLE_VALUE;
 
 static sdcard_info info = {
@@ -58,12 +58,15 @@ static sdcard_info info = {
 
 static void remove_vm_lock_os(void)
 {
-    g_assert(lock_file != INVALID_HANDLE_VALUE);
+    g_free(lock_filename);
+    lock_filename = NULL;
 
-    CloseHandle(lock_file);
+    if (lock_file == INVALID_HANDLE_VALUE) {
+        return;
+    }
 
+    CloseHandle(lock_file);
     lock_file = INVALID_HANDLE_VALUE;
-    g_free(lock_filename);
 }
 
 static void notify_remove_lock(Notifier *notifier, void *data)
@@ -81,18 +84,22 @@ emulator-manager.
 */
 void make_vm_lock_os(void)
 {
-    char *drive_image_filename = g_strdup(get_drive_image_file());
+    g_assert(lock_file == INVALID_HANDLE_VALUE);
+    g_assert(lock_filename == NULL);
 
-    lock_filename = g_strdup_printf("%s.lock", drive_image_filename);
+    lock_filename = g_strdup_printf("%s.lock", get_drive_image_file());
 
-    g_free(drive_image_filename);
-
-    if(g_mkdir_with_parents(g_path_get_dirname(lock_filename), 0777)) {
-        LOG_WARNING("Can not create lock file: %ld\n", GetLastError());
+    if (g_mkdir_with_parents(g_path_get_dirname(lock_filename), 0777)) {
+        LOG_WARNING("Can not create directory for lock file: %ld\n",
+                    GetLastError());
     }
-    lock_file = CreateFile(lock_filename, GENERIC_READ | GENERIC_WRITE, 0,
-            NULL, CREATE_ALWAYS,
-            FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, NULL);
+    lock_file = CreateFile(lock_filename,
+                           GENERIC_READ | GENERIC_WRITE,
+                           0,       // No share
+                           NULL,
+                           CREATE_ALWAYS,
+                           FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE,
+                           NULL);
     if (lock_file == INVALID_HANDLE_VALUE) {
         DWORD error = GetLastError();
         // On Windows, the file opened by CreateFile has exclusive lock
@@ -103,8 +110,7 @@ void make_vm_lock_os(void)
             exit(1);
         }
 
-        LOG_WARNING("Can not create lock file: %0xlx\n", error);
-
+        LOG_WARNING("Failed to create lock file: %0xlx\n", error);
     }
 
     emulator_add_exit_notifier(&remove_lock);
index f3e0abf436f1a7871ef0887feb8407d987ef905b..371e1ac0725d93ec2b78432da37e808891ee5e20 100644 (file)
@@ -100,7 +100,9 @@ static bool fd_checklock(int fd)
 
 static void remove_vm_lock_posix(void)
 {
-    g_assert(lock_file != -1);
+    if (lock_file == -1) {
+        return;
+    }
 
     if (fd_unlock(lock_file)) {
         LOG_INFO("Failed to remove lock from lock file");