qemu: Introduce virQEMUCapsGetCPUBlockers

A function for accessing a list of features blocking CPU model
usability.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Jiri Denemark 2024-10-15 18:18:01 +02:00
parent 5f8abbb7d0
commit e373f87034
2 changed files with 42 additions and 0 deletions

View File

@ -2507,6 +2507,44 @@ virQEMUCapsIsCPUUsable(virQEMUCaps *qemuCaps,
}
/**
* virQEMUCapsGetCPUBlockers:
* @qemuCaps: QEMU capabilities
* @type: virtualization type
* @cpu: CPU model
* @blockers: where to store the list of features
*
* Get a list of features that prevent @cpu from being usable. The pointer to
* the list will be stored in @blockers and the caller must not free it. The
* pointer is valid as long as there is an active reference to @qemuCaps.
*
* Returns 0 on success, -1 when @cpu is not found in @qemuCaps.
*/
int
virQEMUCapsGetCPUBlockers(virQEMUCaps *qemuCaps,
virDomainVirtType type,
const char *cpu,
char ***blockers)
{
qemuMonitorCPUDefs *defs;
size_t i;
defs = virQEMUCapsGetAccel(qemuCaps, type)->cpuModels;
if (!defs)
return -1;
for (i = 0; i < defs->ncpus; i++) {
if (STREQ(defs->cpus[i].name, cpu)) {
*blockers = defs->cpus[i].blockers;
return 0;
}
}
return -1;
}
bool
virQEMUCapsIsMachineDeprecated(virQEMUCaps *qemuCaps,
virDomainVirtType type,

View File

@ -795,6 +795,10 @@ bool virQEMUCapsIsCPUDeprecated(virQEMUCaps *qemuCaps,
bool virQEMUCapsIsCPUUsable(virQEMUCaps *qemuCaps,
virDomainVirtType type,
virCPUDef *cpu);
int virQEMUCapsGetCPUBlockers(virQEMUCaps *qemuCaps,
virDomainVirtType type,
const char *cpu,
char ***blockers);
bool virQEMUCapsIsMachineDeprecated(virQEMUCaps *qemuCaps,
virDomainVirtType type,
const char *machine);