cpu_conf: Introduce virCPUDefFilterFeatures

This new internal API can be used for in place filtering of CPU features
in virCPUDef.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Jiri Denemark 2019-06-07 14:07:10 +02:00
parent 955fd6e7a2
commit c145b660b8
3 changed files with 28 additions and 0 deletions

View File

@ -908,6 +908,28 @@ virCPUDefFindFeature(virCPUDefPtr def,
}
int
virCPUDefFilterFeatures(virCPUDefPtr cpu,
virCPUDefFeatureFilter filter,
void *opaque)
{
size_t i = 0;
while (i < cpu->nfeatures) {
if (filter(cpu->features[i].name, opaque)) {
i++;
continue;
}
VIR_FREE(cpu->features[i].name);
if (VIR_DELETE_ELEMENT_INPLACE(cpu->features, i, cpu->nfeatures) < 0)
return -1;
}
return 0;
}
bool
virCPUDefIsEqual(virCPUDefPtr src,
virCPUDefPtr dst,

View File

@ -219,6 +219,11 @@ virCPUFeatureDefPtr
virCPUDefFindFeature(virCPUDefPtr def,
const char *name);
int
virCPUDefFilterFeatures(virCPUDefPtr cpu,
virCPUDefFeatureFilter filter,
void *opaque);
virCPUDefPtr *
virCPUDefListParse(const char **xmlCPUs,
unsigned int ncpus,

View File

@ -77,6 +77,7 @@ virCPUDefCopy;
virCPUDefCopyModel;
virCPUDefCopyModelFilter;
virCPUDefCopyWithoutModel;
virCPUDefFilterFeatures;
virCPUDefFindFeature;
virCPUDefFormat;
virCPUDefFormatBuf;