emulator: introduced "image_file_path"
authorSeokYeon Hwang <syeon.hwang@samsung.com>
Mon, 11 May 2015 08:04:13 +0000 (17:04 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Tue, 12 May 2015 03:56:31 +0000 (12:56 +0900)
It is an advanced alternative to "target_target_img_path".

Change-Id: Iec530c63ffc13c4fc0fc2fd32a7df2f64d4e9e8b
Signed-off-by: SeokYeon Hwang <syeon.hwang@samsung.com>
(cherry picked from commit dc990fd000f60f85bd99c75d0d5ba29587d2d56f)

tizen/src/emul_state.c
tizen/src/emul_state.h

index b39efe9..fe9d039 100644 (file)
@@ -30,9 +30,8 @@
  */
 
 #include "emul_state.h"
-#include "emulator_options.h"
-#include "skin/maruskin_server.h"
-#include "util/new_debug_ch.h"
+
+#include "emulator_common.h"
 
 #if defined(CONFIG_LINUX)
 #include <X11/XKBlib.h>
@@ -44,6 +43,13 @@ extern bool hax_allowed;
 extern bool hax_allowed;
 #endif
 
+#include "block/block_int.h"
+#include "sysemu/block-backend.h"
+
+#include "emulator_options.h"
+#include "skin/maruskin_server.h"
+#include "util/new_debug_ch.h"
+
 DECLARE_DEBUG_CHANNEL(emul_state);
 
 static EmulatorConfigInfo _emul_info = {0,};
@@ -406,7 +412,33 @@ int get_emul_num_lock_state(void)
     return _emul_state.qemu_num_lock;
 }
 
-/* emualtor vm name */
+/* drive image file */
+const char* get_drive_image_file(void)
+{
+    char *drive_image_file = get_variable("drive_image_file");
+
+    if (!drive_image_file) {
+        return drive_image_file;
+    }
+
+    // we should parse from "drive" parameter.
+    // so qemu_main() had to be called before.
+    BlockBackend *bb = blk_by_name("drive");
+    if (bb) {
+        BlockDriverState *bs = blk_bs(bb);
+        set_variable("drivce_image_file", bs->filename, true);
+
+        return bs->filename;
+    }
+
+    // called before device initialized
+    // or very weired situation
+    LOG_SEVERE("Can not identify main drive image file !!!\n");
+
+    return "";
+}
+
+/* vm name */
 void set_emul_vm_name(char *vm_name)
 {
     _emul_info.vm_name = vm_name;
@@ -417,7 +449,7 @@ char* get_emul_vm_name(void)
     return _emul_info.vm_name;
 }
 
-/* emualtor http proxy */
+/* http proxy */
 void set_emul_http_proxy_addr(char *addr)
 {
     strncpy(_emul_info.http_proxy_addr, addr, sizeof(_emul_info.http_proxy_addr));
index 56534ce..5b0e7fd 100644 (file)
@@ -215,6 +215,7 @@ char* get_emul_hds_guest_path(void);
 char* get_emul_profile(void);
 bool get_emuld_connection(void);
 bool get_sdb_connection(void);
+const char* get_drive_image_file(void);
 
 /* multi-touch */
 MultiTouchState *get_emul_multi_touch_state(void);