};
struct _virNodeDeviceObjList {
- virObjectLockable parent;
+ virObjectRWLockable parent;
/* name string -> virNodeDeviceObj mapping
* for O(1), lockless lookup-by-name */
virNodeDeviceObjDispose)))
return -1;
- if (!(virNodeDeviceObjListClass = virClassNew(virClassForObjectLockable(),
+ if (!(virNodeDeviceObjListClass = virClassNew(virClassForObjectRWLockable(),
"virNodeDeviceObjList",
sizeof(virNodeDeviceObjList),
virNodeDeviceObjListDispose)))
{
virNodeDeviceObjPtr obj;
- virObjectLock(devs);
+ virObjectRWLockRead(devs);
obj = virHashSearch(devs->objs, callback, data, NULL);
virObjectRef(obj);
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
if (obj)
virObjectLock(obj);
{
virNodeDeviceObjPtr obj;
- virObjectLock(devs);
+ virObjectRWLockRead(devs);
obj = virNodeDeviceObjListFindByNameLocked(devs, name);
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
if (obj)
virObjectLock(obj);
if (virNodeDeviceObjInitialize() < 0)
return NULL;
- if (!(devs = virObjectLockableNew(virNodeDeviceObjListClass)))
+ if (!(devs = virObjectRWLockableNew(virNodeDeviceObjListClass)))
return NULL;
if (!(devs->objs = virHashCreate(50, virObjectFreeHashData))) {
{
virNodeDeviceObjPtr obj;
- virObjectLock(devs);
+ virObjectRWLockWrite(devs);
if ((obj = virNodeDeviceObjListFindByNameLocked(devs, def->name))) {
virObjectLock(obj);
}
cleanup:
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
return obj;
}
virObjectRef(obj);
virObjectUnlock(obj);
- virObjectLock(devs);
+ virObjectRWLockWrite(devs);
virObjectLock(obj);
virHashRemoveEntry(devs->objs, def->name);
virObjectUnlock(obj);
virObjectUnref(obj);
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
}
struct virNodeDeviceCountData data = {
.conn = conn, .filter = filter, .matchstr = cap, .count = 0 };
- virObjectLock(devs);
+ virObjectRWLockRead(devs);
virHashForEach(devs->objs, virNodeDeviceObjListNumOfDevicesCallback, &data);
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
return data.count;
}
.conn = conn, .filter = filter, .matchstr = cap, .names = names,
.nnames = 0, .maxnames = maxnames, .error = false };
- virObjectLock(devs);
+ virObjectRWLockRead(devs);
virHashForEach(devs->objs, virNodeDeviceObjListGetNamesCallback, &data);
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
if (data.error)
goto error;
.conn = conn, .filter = filter, .flags = flags,
.devices = NULL, .ndevices = 0, .error = false };
- virObjectLock(devs);
+ virObjectRWLockRead(devs);
if (devices &&
VIR_ALLOC_N(data.devices, virHashSize(devs->objs) + 1) < 0) {
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
return -1;
}
virHashForEach(devs->objs, virNodeDeviceObjListExportCallback, &data);
- virObjectUnlock(devs);
+ virObjectRWUnlock(devs);
if (data.error)
goto cleanup;