[PATCH 11/15] util: mdev: Introduce virMediatedDeviceTypeReadAttrs getter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
 src/util/virmdev.c | 34 ++++++++++++++++++++++++++++++++++
 src/util/virmdev.h |  5 +++++
 2 files changed, 39 insertions(+)

diff --git a/src/util/virmdev.c b/src/util/virmdev.c
index db679b8a6..b57cc3ed9 100644
--- a/src/util/virmdev.c
+++ b/src/util/virmdev.c
@@ -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;
+}
diff --git a/src/util/virmdev.h b/src/util/virmdev.h
index 320610ab9..01ab02e75 100644
--- a/src/util/virmdev.h
+++ b/src/util/virmdev.h
@@ -129,4 +129,9 @@ virMediatedDeviceListMarkDevices(virMediatedDeviceListPtr dst,
 
 void
 virMediatedDeviceTypeFree(virMediatedDeviceTypePtr type);
+
+int
+virMediatedDeviceTypeReadAttrs(const char *sysfspath,
+                               virMediatedDeviceTypePtr *type);
+
 #endif /* __VIR_MDEV_H__ */
-- 
2.13.6

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux