mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-07-11 12:25:52 +00:00
util: consolidate on one free callback for hash data
This previous commit introduced a simpler free callback for
hash data with only 1 arg, the value to free:
commit 49288fac96
Author: Peter Krempa <pkrempa@redhat.com>
Date: Wed Oct 9 15:26:37 2019 +0200
util: hash: Add possibility to use simpler data free function in virHash
It missed two functions in the hash table code which need
to call the alternate data free function, virHashRemoveEntry
and virHashRemoveSet.
After the previous patch though, there is no code that
makes functional use of the 2nd key arg in the data
free function. There is merely one log message that can
be dropped.
We can thus purge the current virHashDataFree callback
entirely, and rename virHashDataFreeSimple to replace
it.
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
feef23e130
commit
bc7e72914a
@ -1037,14 +1037,14 @@ virDomainPCIAddressSetExtensionAlloc(virDomainPCIAddressSetPtr addrs,
|
|||||||
if (VIR_ALLOC(addrs->zpciIds) < 0)
|
if (VIR_ALLOC(addrs->zpciIds) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL, NULL,
|
if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL,
|
||||||
virZPCIAddrKeyCode,
|
virZPCIAddrKeyCode,
|
||||||
virZPCIAddrKeyEqual,
|
virZPCIAddrKeyEqual,
|
||||||
virZPCIAddrKeyCopy,
|
virZPCIAddrKeyCopy,
|
||||||
virZPCIAddrKeyFree)))
|
virZPCIAddrKeyFree)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!(addrs->zpciIds->fids = virHashCreateFull(10, NULL, NULL,
|
if (!(addrs->zpciIds->fids = virHashCreateFull(10, NULL,
|
||||||
virZPCIAddrKeyCode,
|
virZPCIAddrKeyCode,
|
||||||
virZPCIAddrKeyEqual,
|
virZPCIAddrKeyEqual,
|
||||||
virZPCIAddrKeyCopy,
|
virZPCIAddrKeyCopy,
|
||||||
|
@ -619,7 +619,7 @@ virNWFilterVarCombIterGetVarValue(virNWFilterVarCombIterPtr ci,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
hashDataFree(void *payload, const void *name G_GNUC_UNUSED)
|
hashDataFree(void *payload)
|
||||||
{
|
{
|
||||||
virNWFilterVarValueFree(payload);
|
virNWFilterVarValueFree(payload);
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ typedef struct {
|
|||||||
*
|
*
|
||||||
* @data Opaque data, struct holding information about the device
|
* @data Opaque data, struct holding information about the device
|
||||||
*/
|
*/
|
||||||
static void virChrdevHashEntryFree(void *data, const void *key G_GNUC_UNUSED)
|
static void virChrdevHashEntryFree(void *data)
|
||||||
{
|
{
|
||||||
virChrdevHashEntry *ent = data;
|
virChrdevHashEntry *ent = data;
|
||||||
|
|
||||||
@ -455,6 +455,6 @@ int virChrdevOpen(virChrdevsPtr devs,
|
|||||||
VIR_FREE(cbdata->path);
|
VIR_FREE(cbdata->path);
|
||||||
VIR_FREE(cbdata);
|
VIR_FREE(cbdata);
|
||||||
virMutexUnlock(&devs->lock);
|
virMutexUnlock(&devs->lock);
|
||||||
virChrdevHashEntryFree(ent, NULL);
|
virChrdevHashEntryFree(ent);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -262,8 +262,7 @@ virDomainMomentAssignDef(virDomainMomentObjListPtr moments,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virDomainMomentObjListDataFree(void *payload,
|
virDomainMomentObjListDataFree(void *payload)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
virDomainMomentObjPtr obj = payload;
|
virDomainMomentObjPtr obj = payload;
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ virNetworkObjLoadAllPorts(virNetworkObjPtr net,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virNetworkObjPortFree(void *val, const void *key G_GNUC_UNUSED)
|
virNetworkObjPortFree(void *val)
|
||||||
{
|
{
|
||||||
virNetworkPortDefFree(val);
|
virNetworkPortDefFree(val);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ struct xentoollog_logger_libvirt {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
libxlLoggerFileFree(void *payload, const void *key G_GNUC_UNUSED)
|
libxlLoggerFileFree(void *payload)
|
||||||
{
|
{
|
||||||
FILE *file = payload;
|
FILE *file = payload;
|
||||||
VIR_FORCE_FCLOSE(file);
|
VIR_FORCE_FCLOSE(file);
|
||||||
|
@ -139,8 +139,7 @@ virLockDaemonUnlock(virLockDaemonPtr lockd)
|
|||||||
virMutexUnlock(&lockd->lock);
|
virMutexUnlock(&lockd->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virLockDaemonLockSpaceDataFree(void *data,
|
static void virLockDaemonLockSpaceDataFree(void *data)
|
||||||
const void *key G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
virLockSpaceFree(data);
|
virLockSpaceFree(data);
|
||||||
}
|
}
|
||||||
|
@ -660,7 +660,7 @@ virNWFilterSnoopReqUnlock(virNWFilterSnoopReqPtr req)
|
|||||||
* virNWFilterSnoopReqRelease - hash table free function to kill a request
|
* virNWFilterSnoopReqRelease - hash table free function to kill a request
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
virNWFilterSnoopReqRelease(void *req0, const void *name G_GNUC_UNUSED)
|
virNWFilterSnoopReqRelease(void *req0)
|
||||||
{
|
{
|
||||||
virNWFilterSnoopReqPtr req = req0;
|
virNWFilterSnoopReqPtr req = req0;
|
||||||
|
|
||||||
@ -721,7 +721,7 @@ virNWFilterSnoopReqPut(virNWFilterSnoopReqPtr req)
|
|||||||
* - if we still have a valid lease, keep the req for restarts
|
* - if we still have a valid lease, keep the req for restarts
|
||||||
*/
|
*/
|
||||||
if (virHashLookup(virNWFilterSnoopState.snoopReqs, req->ifkey) != req) {
|
if (virHashLookup(virNWFilterSnoopState.snoopReqs, req->ifkey) != req) {
|
||||||
virNWFilterSnoopReqRelease(req, NULL);
|
virNWFilterSnoopReqRelease(req);
|
||||||
} else if (!req->start || req->start->timeout < time(0)) {
|
} else if (!req->start || req->start->timeout < time(0)) {
|
||||||
ignore_value(virHashRemoveEntry(virNWFilterSnoopState.snoopReqs,
|
ignore_value(virHashRemoveEntry(virNWFilterSnoopState.snoopReqs,
|
||||||
req->ifkey));
|
req->ifkey));
|
||||||
|
@ -307,7 +307,7 @@ virNWFilterHasLearnReq(int ifindex)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
freeLearnReqEntry(void *payload, const void *name G_GNUC_UNUSED)
|
freeLearnReqEntry(void *payload)
|
||||||
{
|
{
|
||||||
virNWFilterIPAddrLearnReqFree(payload);
|
virNWFilterIPAddrLearnReqFree(payload);
|
||||||
}
|
}
|
||||||
|
@ -93,8 +93,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuBlockNodeNameBackingChainData,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuBlockNodeNameBackingChainDataHashEntryFree(void *opaque,
|
qemuBlockNodeNameBackingChainDataHashEntryFree(void *opaque)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
qemuBlockNodeNameBackingChainDataFree(opaque);
|
qemuBlockNodeNameBackingChainDataFree(opaque);
|
||||||
}
|
}
|
||||||
|
@ -1516,7 +1516,7 @@ qemuSharedDeviceEntryDomainExists(qemuSharedDeviceEntryPtr entry,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
qemuSharedDeviceEntryFree(void *payload, const void *name G_GNUC_UNUSED)
|
qemuSharedDeviceEntryFree(void *payload)
|
||||||
{
|
{
|
||||||
qemuSharedDeviceEntryPtr entry = payload;
|
qemuSharedDeviceEntryPtr entry = payload;
|
||||||
size_t i;
|
size_t i;
|
||||||
@ -1566,7 +1566,7 @@ qemuSharedDeviceEntryInsert(virQEMUDriverPtr driver,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
qemuSharedDeviceEntryFree(entry, NULL);
|
qemuSharedDeviceEntryFree(entry);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,7 +338,7 @@ bool qemuSharedDeviceEntryDomainExists(qemuSharedDeviceEntryPtr entry,
|
|||||||
char *qemuGetSharedDeviceKey(const char *disk_path)
|
char *qemuGetSharedDeviceKey(const char *disk_path)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
void qemuSharedDeviceEntryFree(void *payload, const void *name);
|
void qemuSharedDeviceEntryFree(void *payload);
|
||||||
|
|
||||||
int qemuAddSharedDisk(virQEMUDriverPtr driver,
|
int qemuAddSharedDisk(virQEMUDriverPtr driver,
|
||||||
virDomainDiskDefPtr disk,
|
virDomainDiskDefPtr disk,
|
||||||
|
@ -2063,8 +2063,7 @@ qemuDomainSetPrivatePaths(virQEMUDriverPtr driver,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dbusVMStateHashFree(void *opaque,
|
dbusVMStateHashFree(void *opaque)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
qemuDBusVMStateFree(opaque);
|
qemuDBusVMStateFree(opaque);
|
||||||
}
|
}
|
||||||
|
@ -5432,8 +5432,7 @@ qemuMigrationJobFinish(virQEMUDriverPtr driver, virDomainObjPtr vm)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuMigrationDstErrorFree(void *data,
|
qemuMigrationDstErrorFree(void *data)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
virErrorPtr err = data;
|
virErrorPtr err = data;
|
||||||
virFreeError(err);
|
virFreeError(err);
|
||||||
|
@ -2109,7 +2109,7 @@ qemuMonitorBlockIOStatusToError(const char *status)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuDomainDiskInfoFree(void *value, const void *name G_GNUC_UNUSED)
|
qemuDomainDiskInfoFree(void *value)
|
||||||
{
|
{
|
||||||
struct qemuDomainDiskInfo *info = value;
|
struct qemuDomainDiskInfo *info = value;
|
||||||
|
|
||||||
@ -2774,8 +2774,7 @@ qemuMonitorQueryRxFilter(qemuMonitorPtr mon, const char *alias,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
qemuMonitorChardevInfoFree(void *data,
|
qemuMonitorChardevInfoFree(void *data)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
qemuMonitorChardevInfoPtr info = data;
|
qemuMonitorChardevInfoPtr info = data;
|
||||||
|
|
||||||
|
@ -882,7 +882,7 @@ struct _qemuMonitorChardevInfo {
|
|||||||
char *ptyPath;
|
char *ptyPath;
|
||||||
virDomainChrDeviceState state;
|
virDomainChrDeviceState state;
|
||||||
};
|
};
|
||||||
void qemuMonitorChardevInfoFree(void *data, const void *name);
|
void qemuMonitorChardevInfoFree(void *data);
|
||||||
int qemuMonitorGetChardevInfo(qemuMonitorPtr mon,
|
int qemuMonitorGetChardevInfo(qemuMonitorPtr mon,
|
||||||
virHashTablePtr *retinfo);
|
virHashTablePtr *retinfo);
|
||||||
|
|
||||||
|
@ -2925,7 +2925,7 @@ qemuMonitorJSONBlockGetNamedNodeData(qemuMonitorPtr mon)
|
|||||||
if (!(nodes = qemuMonitorJSONQueryNamedBlockNodes(mon)))
|
if (!(nodes = qemuMonitorJSONQueryNamedBlockNodes(mon)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!(ret = virHashNew((virHashDataFreeSimple) qemuMonitorJSONBlockNamedNodeDataFree)))
|
if (!(ret = virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNodeDataFree)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (virJSONValueArrayForeachSteal(nodes,
|
if (virJSONValueArrayForeachSteal(nodes,
|
||||||
|
@ -2583,7 +2583,7 @@ virCgroupKillRecursive(virCgroupPtr group, int signum)
|
|||||||
bool backendAvailable = false;
|
bool backendAvailable = false;
|
||||||
virCgroupBackendPtr *backends = virCgroupBackendGetAll();
|
virCgroupBackendPtr *backends = virCgroupBackendGetAll();
|
||||||
virHashTablePtr pids = virHashCreateFull(100,
|
virHashTablePtr pids = virHashCreateFull(100,
|
||||||
NULL, NULL,
|
NULL,
|
||||||
virCgroupPidCode,
|
virCgroupPidCode,
|
||||||
virCgroupPidEqual,
|
virCgroupPidEqual,
|
||||||
virCgroupPidCopy,
|
virCgroupPidCopy,
|
||||||
|
@ -56,7 +56,6 @@ struct _virHashTable {
|
|||||||
size_t size;
|
size_t size;
|
||||||
size_t nbElems;
|
size_t nbElems;
|
||||||
virHashDataFree dataFree;
|
virHashDataFree dataFree;
|
||||||
virHashDataFreeSimple dataFreeSimple;
|
|
||||||
virHashKeyCode keyCode;
|
virHashKeyCode keyCode;
|
||||||
virHashKeyEqual keyEqual;
|
virHashKeyEqual keyEqual;
|
||||||
virHashKeyCopy keyCopy;
|
virHashKeyCopy keyCopy;
|
||||||
@ -106,7 +105,7 @@ static void virHashStrFree(void *name)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
virHashValueFree(void *value, const void *name G_GNUC_UNUSED)
|
virHashValueFree(void *value)
|
||||||
{
|
{
|
||||||
VIR_FREE(value);
|
VIR_FREE(value);
|
||||||
}
|
}
|
||||||
@ -134,7 +133,6 @@ virHashComputeKey(const virHashTable *table, const void *name)
|
|||||||
*/
|
*/
|
||||||
virHashTablePtr virHashCreateFull(ssize_t size,
|
virHashTablePtr virHashCreateFull(ssize_t size,
|
||||||
virHashDataFree dataFree,
|
virHashDataFree dataFree,
|
||||||
virHashDataFreeSimple dataFreeSimple,
|
|
||||||
virHashKeyCode keyCode,
|
virHashKeyCode keyCode,
|
||||||
virHashKeyEqual keyEqual,
|
virHashKeyEqual keyEqual,
|
||||||
virHashKeyCopy keyCopy,
|
virHashKeyCopy keyCopy,
|
||||||
@ -151,10 +149,7 @@ virHashTablePtr virHashCreateFull(ssize_t size,
|
|||||||
table->seed = virRandomBits(32);
|
table->seed = virRandomBits(32);
|
||||||
table->size = size;
|
table->size = size;
|
||||||
table->nbElems = 0;
|
table->nbElems = 0;
|
||||||
if (dataFree)
|
table->dataFree = dataFree;
|
||||||
table->dataFree = dataFree;
|
|
||||||
else
|
|
||||||
table->dataFreeSimple = dataFreeSimple;
|
|
||||||
table->keyCode = keyCode;
|
table->keyCode = keyCode;
|
||||||
table->keyEqual = keyEqual;
|
table->keyEqual = keyEqual;
|
||||||
table->keyCopy = keyCopy;
|
table->keyCopy = keyCopy;
|
||||||
@ -178,10 +173,9 @@ virHashTablePtr virHashCreateFull(ssize_t size,
|
|||||||
* Returns the newly created object, or NULL if an error occurred.
|
* Returns the newly created object, or NULL if an error occurred.
|
||||||
*/
|
*/
|
||||||
virHashTablePtr
|
virHashTablePtr
|
||||||
virHashNew(virHashDataFreeSimple dataFree)
|
virHashNew(virHashDataFree dataFree)
|
||||||
{
|
{
|
||||||
return virHashCreateFull(32,
|
return virHashCreateFull(32,
|
||||||
NULL,
|
|
||||||
dataFree,
|
dataFree,
|
||||||
virHashStrCode,
|
virHashStrCode,
|
||||||
virHashStrEqual,
|
virHashStrEqual,
|
||||||
@ -203,7 +197,6 @@ virHashTablePtr virHashCreate(ssize_t size, virHashDataFree dataFree)
|
|||||||
{
|
{
|
||||||
return virHashCreateFull(size,
|
return virHashCreateFull(size,
|
||||||
dataFree,
|
dataFree,
|
||||||
NULL,
|
|
||||||
virHashStrCode,
|
virHashStrCode,
|
||||||
virHashStrEqual,
|
virHashStrEqual,
|
||||||
virHashStrCopy,
|
virHashStrCopy,
|
||||||
@ -324,9 +317,7 @@ virHashFree(virHashTablePtr table)
|
|||||||
virHashEntryPtr next = iter->next;
|
virHashEntryPtr next = iter->next;
|
||||||
|
|
||||||
if (table->dataFree)
|
if (table->dataFree)
|
||||||
table->dataFree(iter->payload, iter->name);
|
table->dataFree(iter->payload);
|
||||||
if (table->dataFreeSimple)
|
|
||||||
table->dataFreeSimple(iter->payload);
|
|
||||||
if (table->keyFree)
|
if (table->keyFree)
|
||||||
table->keyFree(iter->name);
|
table->keyFree(iter->name);
|
||||||
VIR_FREE(iter);
|
VIR_FREE(iter);
|
||||||
@ -358,9 +349,7 @@ virHashAddOrUpdateEntry(virHashTablePtr table, const void *name,
|
|||||||
if (table->keyEqual(entry->name, name)) {
|
if (table->keyEqual(entry->name, name)) {
|
||||||
if (is_update) {
|
if (is_update) {
|
||||||
if (table->dataFree)
|
if (table->dataFree)
|
||||||
table->dataFree(entry->payload, entry->name);
|
table->dataFree(entry->payload);
|
||||||
if (table->dataFreeSimple)
|
|
||||||
table->dataFreeSimple(entry->payload);
|
|
||||||
entry->payload = userdata;
|
entry->payload = userdata;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
@ -518,12 +507,9 @@ void *virHashSteal(virHashTablePtr table, const void *name)
|
|||||||
void *data = virHashLookup(table, name);
|
void *data = virHashLookup(table, name);
|
||||||
if (data) {
|
if (data) {
|
||||||
virHashDataFree dataFree = table->dataFree;
|
virHashDataFree dataFree = table->dataFree;
|
||||||
virHashDataFreeSimple dataFreeSimple = table->dataFreeSimple;
|
|
||||||
table->dataFree = NULL;
|
table->dataFree = NULL;
|
||||||
table->dataFreeSimple = NULL;
|
|
||||||
virHashRemoveEntry(table, name);
|
virHashRemoveEntry(table, name);
|
||||||
table->dataFree = dataFree;
|
table->dataFree = dataFree;
|
||||||
table->dataFreeSimple = dataFreeSimple;
|
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@ -601,7 +587,7 @@ virHashRemoveEntry(virHashTablePtr table, const void *name)
|
|||||||
for (entry = *nextptr; entry; entry = entry->next) {
|
for (entry = *nextptr; entry; entry = entry->next) {
|
||||||
if (table->keyEqual(entry->name, name)) {
|
if (table->keyEqual(entry->name, name)) {
|
||||||
if (table->dataFree)
|
if (table->dataFree)
|
||||||
table->dataFree(entry->payload, entry->name);
|
table->dataFree(entry->payload);
|
||||||
if (table->keyFree)
|
if (table->keyFree)
|
||||||
table->keyFree(entry->name);
|
table->keyFree(entry->name);
|
||||||
*nextptr = entry->next;
|
*nextptr = entry->next;
|
||||||
@ -689,7 +675,7 @@ virHashRemoveSet(virHashTablePtr table,
|
|||||||
} else {
|
} else {
|
||||||
count++;
|
count++;
|
||||||
if (table->dataFree)
|
if (table->dataFree)
|
||||||
table->dataFree(entry->payload, entry->name);
|
table->dataFree(entry->payload);
|
||||||
if (table->keyFree)
|
if (table->keyFree)
|
||||||
table->keyFree(entry->name);
|
table->keyFree(entry->name);
|
||||||
*nextptr = entry->next;
|
*nextptr = entry->next;
|
||||||
|
@ -25,19 +25,10 @@ typedef virHashAtomic *virHashAtomicPtr;
|
|||||||
/**
|
/**
|
||||||
* virHashDataFree:
|
* virHashDataFree:
|
||||||
* @payload: the data in the hash
|
* @payload: the data in the hash
|
||||||
* @name: the name associated
|
|
||||||
*
|
*
|
||||||
* Callback to free data from a hash.
|
* Callback to free data from a hash.
|
||||||
*/
|
*/
|
||||||
typedef void (*virHashDataFree) (void *payload, const void *name);
|
typedef void (*virHashDataFree) (void *payload);
|
||||||
/**
|
|
||||||
* virHashDataFreeSimple:
|
|
||||||
* @payload: the data in the hash
|
|
||||||
* @name: the name associated
|
|
||||||
*
|
|
||||||
* Callback to free data from a hash.
|
|
||||||
*/
|
|
||||||
typedef void (*virHashDataFreeSimple) (void *payload);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virHashIterator:
|
* virHashIterator:
|
||||||
@ -107,14 +98,13 @@ typedef void (*virHashKeyFree)(void *name);
|
|||||||
/*
|
/*
|
||||||
* Constructor and destructor.
|
* Constructor and destructor.
|
||||||
*/
|
*/
|
||||||
virHashTablePtr virHashNew(virHashDataFreeSimple dataFree);
|
virHashTablePtr virHashNew(virHashDataFree dataFree);
|
||||||
virHashTablePtr virHashCreate(ssize_t size,
|
virHashTablePtr virHashCreate(ssize_t size,
|
||||||
virHashDataFree dataFree);
|
virHashDataFree dataFree);
|
||||||
virHashAtomicPtr virHashAtomicNew(ssize_t size,
|
virHashAtomicPtr virHashAtomicNew(ssize_t size,
|
||||||
virHashDataFree dataFree);
|
virHashDataFree dataFree);
|
||||||
virHashTablePtr virHashCreateFull(ssize_t size,
|
virHashTablePtr virHashCreateFull(ssize_t size,
|
||||||
virHashDataFree dataFree,
|
virHashDataFree dataFree,
|
||||||
virHashDataFreeSimple dataFreeSimple,
|
|
||||||
virHashKeyCode keyCode,
|
virHashKeyCode keyCode,
|
||||||
virHashKeyEqual keyEqual,
|
virHashKeyEqual keyEqual,
|
||||||
virHashKeyCopy keyCopy,
|
virHashKeyCopy keyCopy,
|
||||||
@ -203,6 +193,6 @@ void *virHashSearch(const virHashTable *table, virHashSearcher iter,
|
|||||||
const void *data, void **name);
|
const void *data, void **name);
|
||||||
|
|
||||||
/* Convenience for when VIR_FREE(value) is sufficient as a data freer. */
|
/* Convenience for when VIR_FREE(value) is sufficient as a data freer. */
|
||||||
void virHashValueFree(void *value, const void *name);
|
void virHashValueFree(void *value);
|
||||||
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virHashTable, virHashFree);
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virHashTable, virHashFree);
|
||||||
|
@ -425,8 +425,7 @@ virJSONValueFree(virJSONValuePtr value)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
virJSONValueHashFree(void *opaque,
|
virJSONValueHashFree(void *opaque)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
virJSONValueFree(opaque);
|
virJSONValueFree(opaque);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ typedef struct _virJSONValue virJSONValue;
|
|||||||
typedef virJSONValue *virJSONValuePtr;
|
typedef virJSONValue *virJSONValuePtr;
|
||||||
|
|
||||||
void virJSONValueFree(virJSONValuePtr value);
|
void virJSONValueFree(virJSONValuePtr value);
|
||||||
void virJSONValueHashFree(void *opaque, const void *name);
|
void virJSONValueHashFree(void *opaque);
|
||||||
|
|
||||||
virJSONType virJSONValueGetType(const virJSONValue *value);
|
virJSONType virJSONValueGetType(const virJSONValue *value);
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ static int virKeyFileParse(virKeyFilePtr conf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void virKeyFileEntryFree(void *payload, const void *name G_GNUC_UNUSED)
|
static void virKeyFileEntryFree(void *payload)
|
||||||
{
|
{
|
||||||
virHashFree(payload);
|
virHashFree(payload);
|
||||||
}
|
}
|
||||||
|
@ -231,7 +231,7 @@ virLockSpaceResourceNew(virLockSpacePtr lockspace,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void virLockSpaceResourceDataFree(void *opaque, const void *name G_GNUC_UNUSED)
|
static void virLockSpaceResourceDataFree(void *opaque)
|
||||||
{
|
{
|
||||||
virLockSpaceResourcePtr res = opaque;
|
virLockSpaceResourcePtr res = opaque;
|
||||||
virLockSpaceResourceFree(res);
|
virLockSpaceResourceFree(res);
|
||||||
|
@ -589,8 +589,7 @@ void virObjectFreeCallback(void *opaque)
|
|||||||
* typedef.
|
* typedef.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
virObjectFreeHashData(void *opaque,
|
virObjectFreeHashData(void *opaque)
|
||||||
const void *name G_GNUC_UNUSED)
|
|
||||||
{
|
{
|
||||||
virObjectUnref(opaque);
|
virObjectUnref(opaque);
|
||||||
}
|
}
|
||||||
|
@ -123,8 +123,7 @@ void
|
|||||||
virObjectFreeCallback(void *opaque);
|
virObjectFreeCallback(void *opaque);
|
||||||
|
|
||||||
void
|
void
|
||||||
virObjectFreeHashData(void *opaque,
|
virObjectFreeHashData(void *opaque);
|
||||||
const void *name);
|
|
||||||
|
|
||||||
void *
|
void *
|
||||||
virObjectLockableNew(virClassPtr klass)
|
virObjectLockableNew(virClassPtr klass)
|
||||||
|
@ -619,12 +619,12 @@ int virSystemdCanHybridSleep(bool *result)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virSystemdActivationEntryFree(void *data, const void *name)
|
virSystemdActivationEntryFree(void *data)
|
||||||
{
|
{
|
||||||
virSystemdActivationEntryPtr ent = data;
|
virSystemdActivationEntryPtr ent = data;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
VIR_DEBUG("Closing activation FDs for %s", (const char *)name);
|
VIR_DEBUG("Closing activation FDs");
|
||||||
for (i = 0; i < ent->nfds; i++) {
|
for (i = 0; i < ent->nfds; i++) {
|
||||||
VIR_DEBUG("Closing activation FD %d", ent->fds[i]);
|
VIR_DEBUG("Closing activation FD %d", ent->fds[i]);
|
||||||
VIR_FORCE_CLOSE(ent->fds[i]);
|
VIR_FORCE_CLOSE(ent->fds[i]);
|
||||||
@ -647,7 +647,7 @@ virSystemdActivationAddFD(virSystemdActivationPtr act,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (VIR_ALLOC_N(ent->fds, 1) < 0) {
|
if (VIR_ALLOC_N(ent->fds, 1) < 0) {
|
||||||
virSystemdActivationEntryFree(ent, name);
|
virSystemdActivationEntryFree(ent);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -655,7 +655,7 @@ virSystemdActivationAddFD(virSystemdActivationPtr act,
|
|||||||
|
|
||||||
VIR_DEBUG("Record first FD %d with name %s", fd, name);
|
VIR_DEBUG("Record first FD %d with name %s", fd, name);
|
||||||
if (virHashAddEntry(act->fds, name, ent) < 0) {
|
if (virHashAddEntry(act->fds, name, ent) < 0) {
|
||||||
virSystemdActivationEntryFree(ent, name);
|
virSystemdActivationEntryFree(ent);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user