[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC][PATCH 12/13] Kemari: use signal to save qemu state for Kemari



References: <49B86208.2020205@xxxxxxxxxxxxx>
In-Reply-To: <49B86208.2020205@xxxxxxxxxxxxx>
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

This is an updated version of the following patch.  Followed the
changes in saving qemu state code.

http://lists.xensource.com/archives/html/xen-devel/2009-03/msg00381.html

Signed-off-by: Yoshisato Yanagisawa <yanagisawa.yoshisato@xxxxxxxxxxxxx>
Signed-off-by: Yoshi Tamura <tamura.yoshiaki@xxxxxxxxxxxxx>
---
 vl.c              |   24 ++++++++++++++++++++++++
 xen-config-host.h |    1 +
 2 files changed, 25 insertions(+)

diff --git a/vl.c b/vl.c
index 8539f6d..58875d9 100644
--- a/vl.c
+++ b/vl.c
@@ -274,6 +274,8 @@ static int icount_time_shift;
 static int64_t qemu_icount_bias;
 static QEMUTimer *icount_rt_timer;
 static QEMUTimer *icount_vm_timer;
+/* Kemari */
+volatile int kemari_enabled = 0;

 uint8_t qemu_uuid[16];

@@ -6961,6 +6963,8 @@ int qemu_savevm_state_complete(QEMUFile *f)

     for(se = first_se; se != NULL; se = se->next) {
         int len;
+        if (kemari_enabled && strstr(se->idstr, "vga"))
+            continue;

        if (se->save_state == NULL)
            continue;
@@ -9005,6 +9009,25 @@ static void termsig_setup(void)
     sigaction(SIGTERM, &act, NULL);
 }

+void xenstore_process_logdirty_event(void);
+static void kemari_handler(int dummy)
+{
+    kemari_enabled = 1; /* QEMU will run in kemari mode */
+    xenstore_process_logdirty_event();
+}
+
+static void kemari_setup(void)
+{
+    struct sigaction act;
+
+    memset(&act, 0, sizeof(act));
+#ifdef CONFIG_DM
+    act.sa_handler = kemari_handler;
+#else /* !CONFIG_DM */
+    act.sa_handler = SIG_DFL;
+#endif /* CONFIG_DM */
+    sigaction(SIGUSR1, &act, NULL);
+}
 #endif

 int main(int argc, char **argv)
@@ -10045,6 +10068,7 @@ int main(int argc, char **argv)
 #ifndef _WIN32
     /* must be after terminal init, SDL library changes signal handlers */
     termsig_setup();
+    kemari_setup();
 #endif

     /* Maintain compatibility with multiple stdio monitors */
diff --git a/xen-config-host.h b/xen-config-host.h
index 3d53364..8c7fa28 100644
--- a/xen-config-host.h
+++ b/xen-config-host.h
@@ -41,3 +41,4 @@ void xenstore_store_serial_port_info(int i, struct 
CharDriverState *chr,

 extern unsigned long *logdirty_bitmap;
 extern unsigned long logdirty_bitmap_size;
+extern volatile int kemari_enabled;



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.