qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 3/3] savevm: Convert loadvm handlers list to LIST


From: Juan Quintela
Subject: [Qemu-devel] [PATCH 3/3] savevm: Convert loadvm handlers list to LIST
Date: Fri, 28 Aug 2009 22:31:57 +0200

Signed-off-by: Juan Quintela <address@hidden>
---
 savevm.c |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/savevm.c b/savevm.c
index baef277..9836c60 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1260,10 +1260,10 @@ static SaveStateEntry *find_se(const char *idstr, int 
instance_id)
 }

 typedef struct LoadStateEntry {
+    LIST_ENTRY(LoadStateEntry) entry;
     SaveStateEntry *se;
     int section_id;
     int version_id;
-    struct LoadStateEntry *next;
 } LoadStateEntry;

 static int qemu_loadvm_state_v2(QEMUFile *f)
@@ -1309,7 +1309,8 @@ static int qemu_loadvm_state_v2(QEMUFile *f)

 int qemu_loadvm_state(QEMUFile *f)
 {
-    LoadStateEntry *first_le = NULL;
+    LIST_HEAD(, LoadStateEntry) loadvm_handlers;
+    LoadStateEntry *le, *new_le;
     uint8_t section_type;
     unsigned int v;
     int ret;
@@ -1326,7 +1327,6 @@ int qemu_loadvm_state(QEMUFile *f)

     while ((section_type = qemu_get_byte(f)) != QEMU_VM_EOF) {
         uint32_t instance_id, version_id, section_id;
-        LoadStateEntry *le;
         SaveStateEntry *se;
         char idstr[257];
         int len;
@@ -1364,8 +1364,7 @@ int qemu_loadvm_state(QEMUFile *f)
             le->se = se;
             le->section_id = section_id;
             le->version_id = version_id;
-            le->next = first_le;
-            first_le = le;
+            LIST_INSERT_HEAD(&loadvm_handlers, le, entry);

             ret = vmstate_load(f, le->se, le->version_id);
             if (ret < 0) {
@@ -1378,7 +1377,11 @@ int qemu_loadvm_state(QEMUFile *f)
         case QEMU_VM_SECTION_END:
             section_id = qemu_get_be32(f);

-            for (le = first_le; le && le->section_id != section_id; le = 
le->next);
+            LIST_FOREACH(le, &loadvm_handlers, entry) {
+                if (le->section_id == section_id) {
+                    break;
+                }
+            }
             if (le == NULL) {
                 fprintf(stderr, "Unknown savevm section %d\n", section_id);
                 ret = -EINVAL;
@@ -1402,9 +1405,8 @@ int qemu_loadvm_state(QEMUFile *f)
     ret = 0;

 out:
-    while (first_le) {
-        LoadStateEntry *le = first_le;
-        first_le = first_le->next;
+    LIST_FOREACH_SAFE(le, &loadvm_handlers, entry, new_le) {
+        LIST_REMOVE(le, entry);
         qemu_free(le);
     }

-- 
1.6.2.5





reply via email to

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