]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Split out NUMA topology formatting to simplify access to data
authorPeter Krempa <pkrempa@redhat.com>
Fri, 18 Jan 2013 19:39:00 +0000 (20:39 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 24 Jan 2013 09:53:00 +0000 (10:53 +0100)
src/conf/capabilities.c

index 365c511e11ae533cd03dbbd0a1f15ea2a4f43119..0d2512e6af970cfea77dd56e66b8435015f00cb7 100644 (file)
@@ -678,6 +678,28 @@ virCapabilitiesDefaultGuestEmulator(virCapsPtr caps,
     return NULL;
 }
 
+static void
+virCapabilitiesFormatNUMATopology(virBufferPtr xml,
+                                  size_t ncells,
+                                  virCapsHostNUMACellPtr *cells)
+{
+    int i;
+    int j;
+
+    virBufferAddLit(xml, "    <topology>\n");
+    virBufferAsprintf(xml, "      <cells num='%zu'>\n", ncells);
+    for (i = 0; i < ncells; i++) {
+        virBufferAsprintf(xml, "        <cell id='%d'>\n", cells[i]->num);
+        virBufferAsprintf(xml, "          <cpus num='%d'>\n", cells[i]->ncpus);
+        for (j = 0; j < cells[i]->ncpus; j++)
+            virBufferAsprintf(xml, "            <cpu id='%d'/>\n",
+                              cells[i]->cpus[j]);
+        virBufferAddLit(xml, "          </cpus>\n");
+        virBufferAddLit(xml, "        </cell>\n");
+    }
+    virBufferAddLit(xml, "      </cells>\n");
+    virBufferAddLit(xml, "    </topology>\n");
+}
 
 /**
  * virCapabilitiesFormatXML:
@@ -752,24 +774,9 @@ virCapabilitiesFormatXML(virCapsPtr caps)
         virBufferAddLit(&xml, "    </migration_features>\n");
     }
 
-    if (caps->host.nnumaCell) {
-        virBufferAddLit(&xml, "    <topology>\n");
-        virBufferAsprintf(&xml, "      <cells num='%zu'>\n",
-                          caps->host.nnumaCell);
-        for (i = 0 ; i < caps->host.nnumaCell ; i++) {
-            virBufferAsprintf(&xml, "        <cell id='%d'>\n",
-                              caps->host.numaCell[i]->num);
-            virBufferAsprintf(&xml, "          <cpus num='%d'>\n",
-                              caps->host.numaCell[i]->ncpus);
-            for (j = 0 ; j < caps->host.numaCell[i]->ncpus ; j++)
-                virBufferAsprintf(&xml, "            <cpu id='%d'/>\n",
-                                  caps->host.numaCell[i]->cpus[j]);
-            virBufferAddLit(&xml, "          </cpus>\n");
-            virBufferAddLit(&xml, "        </cell>\n");
-        }
-        virBufferAddLit(&xml, "      </cells>\n");
-        virBufferAddLit(&xml, "    </topology>\n");
-    }
+    if (caps->host.nnumaCell)
+        virCapabilitiesFormatNUMATopology(&xml, caps->host.nnumaCell,
+                                          caps->host.numaCell);
 
     for (i = 0; i < caps->host.nsecModels; i++) {
         virBufferAddLit(&xml, "    <secmodel>\n");