mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
nodedev: Introduce virNodeDeviceObjNumOfDevices
Unify the NumOfDevices API into virnodedeviceobj.c from node_device_driver and test_driver. The only real difference between the two is that the test driver doesn't call the aclfilter API. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
4fba40159f
commit
be3c2dfd1a
@ -474,6 +474,28 @@ virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
virNodeDeviceObjNumOfDevices(virNodeDeviceObjListPtr devs,
|
||||||
|
virConnectPtr conn,
|
||||||
|
const char *cap,
|
||||||
|
virNodeDeviceObjListFilter aclfilter)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
int ndevs = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < devs->count; i++) {
|
||||||
|
virNodeDeviceObjPtr obj = devs->objs[i];
|
||||||
|
virNodeDeviceObjLock(obj);
|
||||||
|
if (aclfilter && aclfilter(conn, obj->def) &&
|
||||||
|
(!cap || virNodeDeviceObjHasCap(obj, cap)))
|
||||||
|
++ndevs;
|
||||||
|
virNodeDeviceObjUnlock(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ndevs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define MATCH(FLAG) ((flags & (VIR_CONNECT_LIST_NODE_DEVICES_CAP_ ## FLAG)) && \
|
#define MATCH(FLAG) ((flags & (VIR_CONNECT_LIST_NODE_DEVICES_CAP_ ## FLAG)) && \
|
||||||
virNodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FLAG))
|
virNodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FLAG))
|
||||||
static bool
|
static bool
|
||||||
|
@ -82,6 +82,12 @@ typedef bool
|
|||||||
(*virNodeDeviceObjListFilter)(virConnectPtr conn,
|
(*virNodeDeviceObjListFilter)(virConnectPtr conn,
|
||||||
virNodeDeviceDefPtr def);
|
virNodeDeviceDefPtr def);
|
||||||
|
|
||||||
|
int
|
||||||
|
virNodeDeviceObjNumOfDevices(virNodeDeviceObjListPtr devs,
|
||||||
|
virConnectPtr conn,
|
||||||
|
const char *cap,
|
||||||
|
virNodeDeviceObjListFilter aclfilter);
|
||||||
|
|
||||||
int
|
int
|
||||||
virNodeDeviceObjListExport(virConnectPtr conn,
|
virNodeDeviceObjListExport(virConnectPtr conn,
|
||||||
virNodeDeviceObjList devobjs,
|
virNodeDeviceObjList devobjs,
|
||||||
|
@ -953,6 +953,7 @@ virNodeDeviceObjHasCap;
|
|||||||
virNodeDeviceObjListExport;
|
virNodeDeviceObjListExport;
|
||||||
virNodeDeviceObjListFree;
|
virNodeDeviceObjListFree;
|
||||||
virNodeDeviceObjLock;
|
virNodeDeviceObjLock;
|
||||||
|
virNodeDeviceObjNumOfDevices;
|
||||||
virNodeDeviceObjRemove;
|
virNodeDeviceObjRemove;
|
||||||
virNodeDeviceObjUnlock;
|
virNodeDeviceObjUnlock;
|
||||||
|
|
||||||
|
@ -160,7 +160,6 @@ nodeNumOfDevices(virConnectPtr conn,
|
|||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
int ndevs = 0;
|
int ndevs = 0;
|
||||||
size_t i;
|
|
||||||
|
|
||||||
if (virNodeNumOfDevicesEnsureACL(conn) < 0)
|
if (virNodeNumOfDevicesEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -168,15 +167,8 @@ nodeNumOfDevices(virConnectPtr conn,
|
|||||||
virCheckFlags(0, -1);
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
nodeDeviceLock();
|
nodeDeviceLock();
|
||||||
for (i = 0; i < driver->devs.count; i++) {
|
ndevs = virNodeDeviceObjNumOfDevices(&driver->devs, conn, cap,
|
||||||
virNodeDeviceObjPtr obj = driver->devs.objs[i];
|
virNodeNumOfDevicesCheckACL);
|
||||||
virNodeDeviceObjLock(obj);
|
|
||||||
if (virNodeNumOfDevicesCheckACL(conn, obj->def) &&
|
|
||||||
((cap == NULL) ||
|
|
||||||
virNodeDeviceObjHasCap(obj, cap)))
|
|
||||||
++ndevs;
|
|
||||||
virNodeDeviceObjUnlock(obj);
|
|
||||||
}
|
|
||||||
nodeDeviceUnlock();
|
nodeDeviceUnlock();
|
||||||
|
|
||||||
return ndevs;
|
return ndevs;
|
||||||
|
@ -5372,15 +5372,11 @@ testNodeNumOfDevices(virConnectPtr conn,
|
|||||||
{
|
{
|
||||||
testDriverPtr driver = conn->privateData;
|
testDriverPtr driver = conn->privateData;
|
||||||
int ndevs = 0;
|
int ndevs = 0;
|
||||||
size_t i;
|
|
||||||
|
|
||||||
virCheckFlags(0, -1);
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
testDriverLock(driver);
|
testDriverLock(driver);
|
||||||
for (i = 0; i < driver->devs.count; i++)
|
ndevs = virNodeDeviceObjNumOfDevices(&driver->devs, conn, cap, NULL);
|
||||||
if ((cap == NULL) ||
|
|
||||||
virNodeDeviceObjHasCap(driver->devs.objs[i], cap))
|
|
||||||
++ndevs;
|
|
||||||
testDriverUnlock(driver);
|
testDriverUnlock(driver);
|
||||||
|
|
||||||
return ndevs;
|
return ndevs;
|
||||||
|
Loading…
Reference in New Issue
Block a user