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 bool
virCPUDefIsEqual(virCPUDefPtr src, virCPUDefIsEqual(virCPUDefPtr src,
virCPUDefPtr dst, virCPUDefPtr dst,

View File

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

View File

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