void virInterfaceRemove(virInterfaceObjListPtr interfaces, const virInterfaceObjPtr iface) { unsigned int i; virInterfaceObjUnlock(iface); for (i = 0 ; i < interfaces->count ; i++) { virInterfaceObjLock(interfaces->objs[i]); if (interfaces->objs[i] == iface) { virInterfaceObjUnlock(interfaces->objs[i]); virInterfaceObjFree(interfaces->objs[i]); if (i < (interfaces->count - 1)) memmove(interfaces->objs + i, interfaces->objs + i + 1, sizeof(*(interfaces->objs)) * (interfaces->count - (i + 1))); if (VIR_REALLOC_N(interfaces->objs, interfaces->count - 1) < 0) { ; /* Failure to reduce memory allocation isn't fatal */ } interfaces->count--; break; } virInterfaceObjUnlock(interfaces->objs[i]); } }
virInterfaceObjPtr virInterfaceAssignDef(virInterfaceObjListPtr interfaces, virInterfaceDefPtr def) { virInterfaceObjPtr iface; if ((iface = virInterfaceFindByName(interfaces, def->name))) { virInterfaceDefFree(iface->def); iface->def = def; return iface; } if (VIR_ALLOC(iface) < 0) return NULL; if (virMutexInit(&iface->lock) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot initialize mutex")); VIR_FREE(iface); return NULL; } virInterfaceObjLock(iface); if (VIR_APPEND_ELEMENT_COPY(interfaces->objs, interfaces->count, iface) < 0) { virInterfaceObjFree(iface); return NULL; } iface->def = def; return iface; }
void virInterfaceObjListFree(virInterfaceObjListPtr interfaces) { unsigned int i; for (i = 0 ; i < interfaces->count ; i++) virInterfaceObjFree(interfaces->objs[i]); VIR_FREE(interfaces->objs); interfaces->count = 0; }
void virInterfaceRemove(virInterfaceObjListPtr interfaces, virInterfaceObjPtr iface) { size_t i; virInterfaceObjUnlock(iface); for (i = 0; i < interfaces->count; i++) { virInterfaceObjLock(interfaces->objs[i]); if (interfaces->objs[i] == iface) { virInterfaceObjUnlock(interfaces->objs[i]); virInterfaceObjFree(interfaces->objs[i]); VIR_DELETE_ELEMENT(interfaces->objs, i, interfaces->count); break; } virInterfaceObjUnlock(interfaces->objs[i]); } }