mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
numa_conf: Use virXMLFormatElement() in virDomainNumaDefFormatXML
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
d0e0a909fa
commit
ad661c70b9
@ -1105,92 +1105,81 @@ virDomainNumaDefFormatXML(virBuffer *buf,
|
|||||||
virBufferAdjustIndent(buf, 2);
|
virBufferAdjustIndent(buf, 2);
|
||||||
for (i = 0; i < ncells; i++) {
|
for (i = 0; i < ncells; i++) {
|
||||||
virBitmap *cpumask = virDomainNumaGetNodeCpumask(def, i);
|
virBitmap *cpumask = virDomainNumaGetNodeCpumask(def, i);
|
||||||
int ndistances;
|
g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
|
||||||
size_t ncaches;
|
g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
|
||||||
|
size_t j;
|
||||||
|
|
||||||
memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i);
|
memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i);
|
||||||
discard = virDomainNumaGetNodeDiscard(def, i);
|
discard = virDomainNumaGetNodeDiscard(def, i);
|
||||||
|
|
||||||
virBufferAddLit(buf, "<cell");
|
virBufferAsprintf(&attrBuf, " id='%zu'", i);
|
||||||
virBufferAsprintf(buf, " id='%zu'", i);
|
|
||||||
|
|
||||||
if (cpumask) {
|
if (cpumask) {
|
||||||
g_autofree char *cpustr = virBitmapFormat(cpumask);
|
g_autofree char *cpustr = virBitmapFormat(cpumask);
|
||||||
|
|
||||||
if (!cpustr)
|
if (!cpustr)
|
||||||
return -1;
|
return -1;
|
||||||
virBufferAsprintf(buf, " cpus='%s'", cpustr);
|
virBufferAsprintf(&attrBuf, " cpus='%s'", cpustr);
|
||||||
}
|
}
|
||||||
virBufferAsprintf(buf, " memory='%llu'",
|
virBufferAsprintf(&attrBuf, " memory='%llu'",
|
||||||
virDomainNumaGetNodeMemorySize(def, i));
|
virDomainNumaGetNodeMemorySize(def, i));
|
||||||
virBufferAddLit(buf, " unit='KiB'");
|
virBufferAddLit(&attrBuf, " unit='KiB'");
|
||||||
if (memAccess)
|
if (memAccess)
|
||||||
virBufferAsprintf(buf, " memAccess='%s'",
|
virBufferAsprintf(&attrBuf, " memAccess='%s'",
|
||||||
virDomainMemoryAccessTypeToString(memAccess));
|
virDomainMemoryAccessTypeToString(memAccess));
|
||||||
|
|
||||||
if (discard)
|
if (discard)
|
||||||
virBufferAsprintf(buf, " discard='%s'",
|
virBufferAsprintf(&attrBuf, " discard='%s'",
|
||||||
virTristateBoolTypeToString(discard));
|
virTristateBoolTypeToString(discard));
|
||||||
|
|
||||||
ndistances = def->mem_nodes[i].ndistances;
|
if (def->mem_nodes[i].ndistances) {
|
||||||
ncaches = def->mem_nodes[i].ncaches;
|
|
||||||
if (ndistances == 0 && ncaches == 0) {
|
|
||||||
virBufferAddLit(buf, "/>\n");
|
|
||||||
} else {
|
|
||||||
size_t j;
|
|
||||||
|
|
||||||
virBufferAddLit(buf, ">\n");
|
|
||||||
virBufferAdjustIndent(buf, 2);
|
|
||||||
|
|
||||||
if (ndistances) {
|
|
||||||
virDomainNumaDistance *distances = def->mem_nodes[i].distances;
|
virDomainNumaDistance *distances = def->mem_nodes[i].distances;
|
||||||
|
|
||||||
virBufferAddLit(buf, "<distances>\n");
|
virBufferAddLit(&childBuf, "<distances>\n");
|
||||||
virBufferAdjustIndent(buf, 2);
|
virBufferAdjustIndent(&childBuf, 2);
|
||||||
for (j = 0; j < ndistances; j++) {
|
for (j = 0; j < def->mem_nodes[i].ndistances; j++) {
|
||||||
if (distances[j].value) {
|
if (distances[j].value) {
|
||||||
virBufferAddLit(buf, "<sibling");
|
virBufferAddLit(&childBuf, "<sibling");
|
||||||
virBufferAsprintf(buf, " id='%d'", distances[j].cellid);
|
virBufferAsprintf(&childBuf, " id='%d'", distances[j].cellid);
|
||||||
virBufferAsprintf(buf, " value='%d'", distances[j].value);
|
virBufferAsprintf(&childBuf, " value='%d'", distances[j].value);
|
||||||
virBufferAddLit(buf, "/>\n");
|
virBufferAddLit(&childBuf, "/>\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virBufferAdjustIndent(buf, -2);
|
virBufferAdjustIndent(&childBuf, -2);
|
||||||
virBufferAddLit(buf, "</distances>\n");
|
virBufferAddLit(&childBuf, "</distances>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < ncaches; j++) {
|
for (j = 0; j < def->mem_nodes[i].ncaches; j++) {
|
||||||
virDomainNumaCache *cache = &def->mem_nodes[i].caches[j];
|
virDomainNumaCache *cache = &def->mem_nodes[i].caches[j];
|
||||||
|
|
||||||
virBufferAsprintf(buf, "<cache level='%u'", cache->level);
|
virBufferAsprintf(&childBuf, "<cache level='%u'", cache->level);
|
||||||
if (cache->associativity) {
|
if (cache->associativity) {
|
||||||
virBufferAsprintf(buf, " associativity='%s'",
|
virBufferAsprintf(&childBuf, " associativity='%s'",
|
||||||
virDomainCacheAssociativityTypeToString(cache->associativity));
|
virDomainCacheAssociativityTypeToString(cache->associativity));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cache->policy) {
|
if (cache->policy) {
|
||||||
virBufferAsprintf(buf, " policy='%s'",
|
virBufferAsprintf(&childBuf, " policy='%s'",
|
||||||
virDomainCachePolicyTypeToString(cache->policy));
|
virDomainCachePolicyTypeToString(cache->policy));
|
||||||
}
|
}
|
||||||
virBufferAddLit(buf, ">\n");
|
virBufferAddLit(&childBuf, ">\n");
|
||||||
|
|
||||||
virBufferAdjustIndent(buf, 2);
|
virBufferAdjustIndent(&childBuf, 2);
|
||||||
virBufferAsprintf(buf,
|
virBufferAsprintf(&childBuf,
|
||||||
"<size value='%u' unit='KiB'/>\n",
|
"<size value='%u' unit='KiB'/>\n",
|
||||||
cache->size);
|
cache->size);
|
||||||
|
|
||||||
if (cache->line) {
|
if (cache->line) {
|
||||||
virBufferAsprintf(buf,
|
virBufferAsprintf(&childBuf,
|
||||||
"<line value='%u' unit='B'/>\n",
|
"<line value='%u' unit='B'/>\n",
|
||||||
cache->line);
|
cache->line);
|
||||||
}
|
}
|
||||||
|
|
||||||
virBufferAdjustIndent(buf, -2);
|
virBufferAdjustIndent(&childBuf, -2);
|
||||||
virBufferAddLit(buf, "</cache>\n");
|
virBufferAddLit(&childBuf, "</cache>\n");
|
||||||
}
|
|
||||||
virBufferAdjustIndent(buf, -2);
|
|
||||||
virBufferAddLit(buf, "</cell>\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virXMLFormatElement(buf, "cell", &attrBuf, &childBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (def->ninterconnects) {
|
if (def->ninterconnects) {
|
||||||
|
Loading…
Reference in New Issue
Block a user