int virLXCProcessAutoDestroyInit(virLXCDriverPtr driver) { if (!(driver->autodestroy = virHashCreate(5, NULL))) return -1; return 0; }
static int qemuMigrationCookieAddNBD(qemuMigrationCookiePtr mig, virQEMUDriverPtr driver, virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv = vm->privateData; virHashTablePtr stats = NULL; size_t i; int ret = -1, rc; /* It is not a bug if there already is a NBD data */ qemuMigrationCookieNBDFree(mig->nbd); if (VIR_ALLOC(mig->nbd) < 0) return -1; if (vm->def->ndisks && VIR_ALLOC_N(mig->nbd->disks, vm->def->ndisks) < 0) return -1; mig->nbd->ndisks = 0; for (i = 0; i < vm->def->ndisks; i++) { virDomainDiskDefPtr disk = vm->def->disks[i]; qemuBlockStats *entry; if (!stats) { if (!(stats = virHashCreate(10, virHashValueFree))) goto cleanup; if (qemuDomainObjEnterMonitorAsync(driver, vm, priv->job.asyncJob) < 0) goto cleanup; rc = qemuMonitorBlockStatsUpdateCapacity(priv->mon, stats, false); if (qemuDomainObjExitMonitor(driver, vm) < 0) goto cleanup; if (rc < 0) goto cleanup; } if (!disk->info.alias || !(entry = virHashLookup(stats, disk->info.alias))) continue; if (VIR_STRDUP(mig->nbd->disks[mig->nbd->ndisks].target, disk->dst) < 0) goto cleanup; mig->nbd->disks[mig->nbd->ndisks].capacity = entry->capacity; mig->nbd->ndisks++; } mig->nbd->port = priv->nbdPort; mig->flags |= QEMU_MIGRATION_COOKIE_NBD; ret = 0; cleanup: virHashFree(stats); return ret; }
virDomainObjListPtr virDomainObjListNew(void) { virDomainObjListPtr doms; if (virDomainObjListInitialize() < 0) return NULL; if (!(doms = virObjectLockableNew(virDomainObjListClass))) return NULL; if (!(doms->objs = virHashCreate(50, virObjectFreeHashData)) || !(doms->objsName = virHashCreate(50, virObjectFreeHashData))) { virObjectUnref(doms); return NULL; } return doms; }
virStoragePoolObjListPtr virStoragePoolObjListNew(void) { virStoragePoolObjListPtr pools; if (virStoragePoolObjInitialize() < 0) return NULL; if (!(pools = virObjectRWLockableNew(virStoragePoolObjListClass))) return NULL; if (!(pools->objs = virHashCreate(20, virObjectFreeHashData)) || !(pools->objsName = virHashCreate(20, virObjectFreeHashData))) { virObjectUnref(pools); return NULL; } return pools; }
virSecretObjListPtr virSecretObjListNew(void) { virSecretObjListPtr secrets; if (virSecretObjInitialize() < 0) return NULL; if (!(secrets = virObjectLockableNew(virSecretObjListClass))) return NULL; if (!(secrets->objs = virHashCreate(50, virObjectFreeHashData))) { virObjectUnref(secrets); return NULL; } return secrets; }
/* virInterfaceObjList manipulation */ virInterfaceObjListPtr virInterfaceObjListNew(void) { virInterfaceObjListPtr interfaces; if (virInterfaceObjInitialize() < 0) return NULL; if (!(interfaces = virObjectRWLockableNew(virInterfaceObjListClass))) return NULL; if (!(interfaces->objsName = virHashCreate(10, virObjectFreeHashData))) { virObjectUnref(interfaces); return NULL; } return interfaces; }
virCloseCallbacksPtr virCloseCallbacksNew(void) { virCloseCallbacksPtr closeCallbacks; if (virCloseCallbacksInitialize() < 0) return NULL; if (!(closeCallbacks = virObjectLockableNew(virCloseCallbacksClass))) return NULL; closeCallbacks->list = virHashCreate(5, virHashValueFree); if (!closeCallbacks->list) { virObjectUnref(closeCallbacks); return NULL; } return closeCallbacks; }
static virHashTablePtr genericHashFeatures(virCPUDefPtr cpu) { virHashTablePtr hash; size_t i; if ((hash = virHashCreate(cpu->nfeatures, NULL)) == NULL) return NULL; for (i = 0; i < cpu->nfeatures; i++) { if (virHashAddEntry(hash, cpu->features[i].name, cpu->features + i)) { virHashFree(hash); return NULL; } } return hash; }
static virHashTablePtr testHashInit(int size) { virHashTablePtr hash; ssize_t i; if (!(hash = virHashCreate(size, NULL))) return NULL; /* entires are added in reverse order so that they will be linked in * collision list in the same order as in the uuids array */ for (i = ARRAY_CARDINALITY(uuids) - 1; i >= 0; i--) { ssize_t oldsize = virHashTableSize(hash); if (virHashAddEntry(hash, uuids[i], (void *) uuids[i]) < 0) { virHashFree(hash); return NULL; } if (virHashTableSize(hash) != oldsize && virTestGetDebug()) { VIR_WARN("hash grown from %zd to %zd", (size_t)oldsize, (size_t)virHashTableSize(hash)); } } for (i = 0; i < ARRAY_CARDINALITY(uuids); i++) { if (!virHashLookup(hash, uuids[i])) { if (virTestGetVerbose()) { VIR_WARN("\nentry \"%s\" could not be found\n", uuids[i]); } virHashFree(hash); return NULL; } } if (size && size != virHashTableSize(hash) && virTestGetDebug()) fprintf(stderr, "\n"); return hash; }
virDomainCCWAddressSetPtr virDomainCCWAddressSetCreate(void) { virDomainCCWAddressSetPtr addrs = NULL; if (VIR_ALLOC(addrs) < 0) goto error; if (!(addrs->defined = virHashCreate(10, virHashValueFree))) goto error; /* must use cssid = 0xfe (254) for virtio-ccw devices */ addrs->next.cssid = 254; addrs->next.ssid = 0; addrs->next.devno = 0; addrs->next.assigned = 0; return addrs; error: virDomainCCWAddressSetFree(addrs); return NULL; }