mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
cpu_ppc64.c: use g_autoptr() with virCPUppc64MapPtr
Use autocleanup with virCPUppc64MapPtr to simplify existing code. Remove labels when possible. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
f5e5ba3a55
commit
76d2c048c9
@ -390,19 +390,15 @@ ppc64ModelParse(xmlXPathContextPtr ctxt,
|
|||||||
static virCPUppc64MapPtr
|
static virCPUppc64MapPtr
|
||||||
ppc64LoadMap(void)
|
ppc64LoadMap(void)
|
||||||
{
|
{
|
||||||
virCPUppc64MapPtr map;
|
g_autoptr(virCPUppc64Map) map = NULL;
|
||||||
|
|
||||||
if (VIR_ALLOC(map) < 0)
|
if (VIR_ALLOC(map) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
if (cpuMapLoad("ppc64", ppc64VendorParse, NULL, ppc64ModelParse, map) < 0)
|
if (cpuMapLoad("ppc64", ppc64VendorParse, NULL, ppc64ModelParse, map) < 0)
|
||||||
goto error;
|
|
||||||
|
|
||||||
return map;
|
|
||||||
|
|
||||||
error:
|
|
||||||
ppc64MapFree(map);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
return g_steal_pointer(&map);
|
||||||
}
|
}
|
||||||
|
|
||||||
static virCPUDataPtr
|
static virCPUDataPtr
|
||||||
@ -428,7 +424,7 @@ ppc64Compute(virCPUDefPtr host,
|
|||||||
virCPUDataPtr *guestData,
|
virCPUDataPtr *guestData,
|
||||||
char **message)
|
char **message)
|
||||||
{
|
{
|
||||||
virCPUppc64MapPtr map = NULL;
|
g_autoptr(virCPUppc64Map) map = NULL;
|
||||||
g_autoptr(virCPUppc64Model) host_model = NULL;
|
g_autoptr(virCPUppc64Model) host_model = NULL;
|
||||||
g_autoptr(virCPUppc64Model) guest_model = NULL;
|
g_autoptr(virCPUppc64Model) guest_model = NULL;
|
||||||
virCPUDefPtr cpu = NULL;
|
virCPUDefPtr cpu = NULL;
|
||||||
@ -542,7 +538,6 @@ ppc64Compute(virCPUDefPtr host,
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virCPUDefFree(cpu);
|
virCPUDefFree(cpu);
|
||||||
ppc64MapFree(map);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -585,8 +580,7 @@ ppc64DriverDecode(virCPUDefPtr cpu,
|
|||||||
const virCPUData *data,
|
const virCPUData *data,
|
||||||
virDomainCapsCPUModelsPtr models)
|
virDomainCapsCPUModelsPtr models)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
g_autoptr(virCPUppc64Map) map = NULL;
|
||||||
virCPUppc64MapPtr map;
|
|
||||||
const virCPUppc64Model *model;
|
const virCPUppc64Model *model;
|
||||||
|
|
||||||
if (!data || !(map = ppc64LoadMap()))
|
if (!data || !(map = ppc64LoadMap()))
|
||||||
@ -596,26 +590,21 @@ ppc64DriverDecode(virCPUDefPtr cpu,
|
|||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
_("Cannot find CPU model with PVR 0x%08x"),
|
_("Cannot find CPU model with PVR 0x%08x"),
|
||||||
data->data.ppc64.pvr[0].value);
|
data->data.ppc64.pvr[0].value);
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!virCPUModelIsAllowed(model->name, models)) {
|
if (!virCPUModelIsAllowed(model->name, models)) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("CPU model %s is not supported by hypervisor"),
|
_("CPU model %s is not supported by hypervisor"),
|
||||||
model->name);
|
model->name);
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cpu->model = g_strdup(model->name);
|
cpu->model = g_strdup(model->name);
|
||||||
if (model->vendor)
|
if (model->vendor)
|
||||||
cpu->vendor = g_strdup(model->vendor->name);
|
cpu->vendor = g_strdup(model->vendor->name);
|
||||||
|
|
||||||
ret = 0;
|
return 0;
|
||||||
|
|
||||||
cleanup:
|
|
||||||
ppc64MapFree(map);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -686,7 +675,7 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
|||||||
const char **features G_GNUC_UNUSED,
|
const char **features G_GNUC_UNUSED,
|
||||||
bool migratable G_GNUC_UNUSED)
|
bool migratable G_GNUC_UNUSED)
|
||||||
{
|
{
|
||||||
virCPUppc64MapPtr map;
|
g_autoptr(virCPUppc64Map) map = NULL;
|
||||||
const virCPUppc64Model *model;
|
const virCPUppc64Model *model;
|
||||||
const virCPUppc64Vendor *vendor = NULL;
|
const virCPUppc64Vendor *vendor = NULL;
|
||||||
virCPUDefPtr cpu = NULL;
|
virCPUDefPtr cpu = NULL;
|
||||||
@ -761,23 +750,19 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
|||||||
cpu->match = VIR_CPU_MATCH_EXACT;
|
cpu->match = VIR_CPU_MATCH_EXACT;
|
||||||
cpu->fallback = VIR_CPU_FALLBACK_FORBID;
|
cpu->fallback = VIR_CPU_FALLBACK_FORBID;
|
||||||
|
|
||||||
cleanup:
|
|
||||||
ppc64MapFree(map);
|
|
||||||
|
|
||||||
return cpu;
|
return cpu;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
virCPUDefFree(cpu);
|
virCPUDefFree(cpu);
|
||||||
cpu = NULL;
|
cpu = NULL;
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virCPUppc64DriverGetModels(char ***models)
|
virCPUppc64DriverGetModels(char ***models)
|
||||||
{
|
{
|
||||||
virCPUppc64MapPtr map;
|
g_autoptr(virCPUppc64Map) map = NULL;
|
||||||
size_t i;
|
size_t i;
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
if (!(map = ppc64LoadMap()))
|
if (!(map = ppc64LoadMap()))
|
||||||
goto error;
|
goto error;
|
||||||
@ -790,18 +775,14 @@ virCPUppc64DriverGetModels(char ***models)
|
|||||||
(*models)[i] = g_strdup(map->models[i]->name);
|
(*models)[i] = g_strdup(map->models[i]->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = map->nmodels;
|
return map->nmodels;
|
||||||
|
|
||||||
cleanup:
|
|
||||||
ppc64MapFree(map);
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (models) {
|
if (models) {
|
||||||
g_strfreev(*models);
|
g_strfreev(*models);
|
||||||
*models = NULL;
|
*models = NULL;
|
||||||
}
|
}
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct cpuArchDriver cpuDriverPPC64 = {
|
struct cpuArchDriver cpuDriverPPC64 = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user