qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 12/13] migration: Test new fd infrastructure


From: Juan Quintela
Subject: [Qemu-devel] [PATCH 12/13] migration: Test new fd infrastructure
Date: Wed, 20 Apr 2016 16:44:40 +0200

We just send the address through the alternate channels and test that it
is ok.

Signed-off-by: Juan Quintela <address@hidden>
---
 migration/ram.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 5507b1f..b1b69cb 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -421,17 +421,27 @@ QemuCond  multifd_send_cond;
 static void *multifd_send_thread(void *opaque)
 {
     MultiFDSendParams *params = opaque;
+    uint8_t *address;

     qemu_mutex_lock(&params->mutex);
     while (!params->quit){
         if (params->address) {
+            address = params->address;
             params->address = 0;
             qemu_mutex_unlock(&params->mutex);
+
+            if (write(params->s, &address, sizeof(uint8_t *))
+                != sizeof(uint8_t*)) {
+                /* Shuoudn't ever happen */
+                exit(-1);
+            }
             qemu_mutex_lock(&multifd_send_mutex);
             params->done = true;
             qemu_cond_signal(&multifd_send_cond);
             qemu_mutex_unlock(&multifd_send_mutex);
             qemu_mutex_lock(&params->mutex);
+        } else {
+            qemu_cond_wait(&params->cond, &params->mutex);
         }
     }
     qemu_mutex_unlock(&params->mutex);
@@ -440,8 +450,6 @@ static void *multifd_send_thread(void *opaque)
 }

 static void terminate_multifd_send_threads(void)
-        } else {
-            qemu_cond_wait(&params->cond, &params->mutex);
 {
     int i, thread_count;

@@ -550,12 +558,28 @@ QemuCond  multifd_recv_cond;
 static void *multifd_recv_thread(void *opaque)
 {
     MultiFDRecvParams *params = opaque;
+    uint8_t *address;
+    uint8_t *recv_address;

     qemu_mutex_lock(&params->mutex);
     while (!params->quit){
         if (params->address) {
+            address = params->address;
             params->address = 0;
             qemu_mutex_unlock(&params->mutex);
+
+            if (read(params->s, &recv_address, sizeof(uint8_t*))
+                != sizeof(uint8_t *)) {
+                /* shouldn't ever happen */
+                exit(-1);
+            }
+
+            if (address != recv_address) {
+                printf("We received %p what we were expecting %p\n",
+                       recv_address, address);
+                exit(-1);
+            }
+
             qemu_mutex_lock(&multifd_recv_mutex);
             params->done = true;
             qemu_cond_signal(&multifd_recv_cond);
-- 
2.5.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]