1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-25 01:34:11 +03:00

nodedev: Introduce virNodeDeviceObjNew

Create an allocator for the virNodeDeviceObjPtr - include setting up
the mutex, saving the virNodeDeviceDefPtr, and locking the return object.

Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
John Ferlan 2017-05-12 13:34:23 -04:00
parent aa6e856b95
commit 65981c8596

View File

@ -33,6 +33,26 @@
VIR_LOG_INIT("conf.virnodedeviceobj");
static virNodeDeviceObjPtr
virNodeDeviceObjNew(void)
{
virNodeDeviceObjPtr obj;
if (VIR_ALLOC(obj) < 0)
return NULL;
if (virMutexInit(&obj->lock) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("cannot initialize mutex"));
VIR_FREE(obj);
return NULL;
}
virNodeDeviceObjLock(obj);
return obj;
}
virNodeDeviceDefPtr
virNodeDeviceObjGetDef(virNodeDeviceObjPtr obj)
{
@ -276,17 +296,9 @@ virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs,
return obj;
}
if (VIR_ALLOC(obj) < 0)
if (!(obj = virNodeDeviceObjNew()))
return NULL;
if (virMutexInit(&obj->lock) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("cannot initialize mutex"));
VIR_FREE(obj);
return NULL;
}
virNodeDeviceObjLock(obj);
if (VIR_APPEND_ELEMENT_COPY(devs->objs, devs->count, obj) < 0) {
virNodeDeviceObjUnlock(obj);
virNodeDeviceObjFree(obj);
@ -295,7 +307,6 @@ virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs,
obj->def = def;
return obj;
}