On 01/19/2013 12:06 AM, Peter Krempa wrote: > --- > src/conf/capabilities.c | 43 +++++++++++++++++++++++++------------------ > 1 file changed, 25 insertions(+), 18 deletions(-) > > diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c > index 365c511..0d2512e 100644 > --- a/src/conf/capabilities.c > +++ b/src/conf/capabilities.c > @@ -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"); > ACK, Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list