mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 07:42:56 +00:00
util: mdev: Introduce virMediatedDeviceTypeReadAttrs getter
This should serve as a replacement for the existing udevFillMdevType which is responsible for fetching the device type's attributes from the sysfs interface. The problem with the existing solution is that it's tied to the udev backend. Signed-off-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
c3faa92a1b
commit
3545cbef7f
@ -2182,6 +2182,7 @@ virMediatedDeviceModelTypeToString;
|
||||
virMediatedDeviceNew;
|
||||
virMediatedDeviceSetUsedBy;
|
||||
virMediatedDeviceTypeFree;
|
||||
virMediatedDeviceTypeReadAttrs;
|
||||
|
||||
|
||||
|
||||
|
@ -496,3 +496,37 @@ virMediatedDeviceTypeFree(virMediatedDeviceTypePtr type)
|
||||
VIR_FREE(type->device_api);
|
||||
VIR_FREE(type);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
virMediatedDeviceTypeReadAttrs(const char *sysfspath,
|
||||
virMediatedDeviceTypePtr *type)
|
||||
{
|
||||
int ret = -1;
|
||||
virMediatedDeviceTypePtr tmp = NULL;
|
||||
|
||||
#define MDEV_GET_SYSFS_ATTR(attr, dst, cb) \
|
||||
do { \
|
||||
if (cb(dst, "%s/%s", sysfspath, attr) < 0) \
|
||||
goto cleanup; \
|
||||
} while (0)
|
||||
|
||||
if (VIR_ALLOC(tmp) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (VIR_STRDUP(tmp->id, last_component(sysfspath)) < 0)
|
||||
goto cleanup;
|
||||
|
||||
MDEV_GET_SYSFS_ATTR("name", &tmp->name, virFileReadValueString);
|
||||
MDEV_GET_SYSFS_ATTR("device_api", &tmp->device_api, virFileReadValueString);
|
||||
MDEV_GET_SYSFS_ATTR("available_instances", &tmp->available_instances,
|
||||
virFileReadValueUint);
|
||||
|
||||
#undef MDEV_GET_SYSFS_ATTR
|
||||
|
||||
VIR_STEAL_PTR(*type, tmp);
|
||||
ret = 0;
|
||||
cleanup:
|
||||
virMediatedDeviceTypeFree(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
@ -129,4 +129,9 @@ virMediatedDeviceListMarkDevices(virMediatedDeviceListPtr dst,
|
||||
|
||||
void
|
||||
virMediatedDeviceTypeFree(virMediatedDeviceTypePtr type);
|
||||
|
||||
int
|
||||
virMediatedDeviceTypeReadAttrs(const char *sysfspath,
|
||||
virMediatedDeviceTypePtr *type);
|
||||
|
||||
#endif /* __VIR_MDEV_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user