[PATCH 1/4] util: vircgroup: introduce virCgroup(Get|Set)ValueRaw

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

 



If we need to get a path of specific file and we need to check its
existence before we use it then we can reuse that path to get/set
values instead of calling the existing get/set value functions which
would be building the path again.

Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx>
---
 src/util/vircgroup.c     | 62 ++++++++++++++++++++++++++--------------
 src/util/vircgrouppriv.h |  6 ++++
 2 files changed, 46 insertions(+), 22 deletions(-)

diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index f58e336404..278453ea2f 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -455,28 +455,22 @@ virCgroupGetBlockDevString(const char *path)
 
 
 int
-virCgroupSetValueStr(virCgroupPtr group,
-                     int controller,
-                     const char *key,
+virCgroupSetValueRaw(const char *path,
                      const char *value)
 {
-    VIR_AUTOFREE(char *) keypath = NULL;
-    char *tmp = NULL;
+    char *tmp;
 
-    if (virCgroupPathOfController(group, controller, key, &keypath) < 0)
-        return -1;
-
-    VIR_DEBUG("Set value '%s' to '%s'", keypath, value);
-    if (virFileWriteStr(keypath, value, 0) < 0) {
+    VIR_DEBUG("Set value '%s' to '%s'", path, value);
+    if (virFileWriteStr(path, value, 0) < 0) {
         if (errno == EINVAL &&
-            (tmp = strrchr(keypath, '/'))) {
+            (tmp = strrchr(path, '/'))) {
             virReportSystemError(errno,
                                  _("Invalid value '%s' for '%s'"),
                                  value, tmp + 1);
             return -1;
         }
         virReportSystemError(errno,
-                             _("Unable to write to '%s'"), keypath);
+                             _("Unable to write to '%s'"), path);
         return -1;
     }
 
@@ -485,24 +479,18 @@ virCgroupSetValueStr(virCgroupPtr group,
 
 
 int
-virCgroupGetValueStr(virCgroupPtr group,
-                     int controller,
-                     const char *key,
+virCgroupGetValueRaw(const char *path,
                      char **value)
 {
-    VIR_AUTOFREE(char *) keypath = NULL;
     int rc;
 
     *value = NULL;
 
-    if (virCgroupPathOfController(group, controller, key, &keypath) < 0)
-        return -1;
+    VIR_DEBUG("Get value %s", path);
 
-    VIR_DEBUG("Get value %s", keypath);
-
-    if ((rc = virFileReadAll(keypath, 1024*1024, value)) < 0) {
+    if ((rc = virFileReadAll(path, 1024*1024, value)) < 0) {
         virReportSystemError(errno,
-                             _("Unable to read from '%s'"), keypath);
+                             _("Unable to read from '%s'"), path);
         return -1;
     }
 
@@ -514,6 +502,36 @@ virCgroupGetValueStr(virCgroupPtr group,
 }
 
 
+int
+virCgroupSetValueStr(virCgroupPtr group,
+                     int controller,
+                     const char *key,
+                     const char *value)
+{
+    VIR_AUTOFREE(char *) keypath = NULL;
+
+    if (virCgroupPathOfController(group, controller, key, &keypath) < 0)
+        return -1;
+
+    return virCgroupSetValueRaw(keypath, value);
+}
+
+
+int
+virCgroupGetValueStr(virCgroupPtr group,
+                     int controller,
+                     const char *key,
+                     char **value)
+{
+    VIR_AUTOFREE(char *) keypath = NULL;
+
+    if (virCgroupPathOfController(group, controller, key, &keypath) < 0)
+        return -1;
+
+    return virCgroupGetValueRaw(keypath, value);
+}
+
+
 int
 virCgroupGetValueForBlkDev(virCgroupPtr group,
                            int controller,
diff --git a/src/util/vircgrouppriv.h b/src/util/vircgrouppriv.h
index 9110c77297..758091811e 100644
--- a/src/util/vircgrouppriv.h
+++ b/src/util/vircgrouppriv.h
@@ -58,6 +58,12 @@ struct _virCgroup {
     virCgroupV2Controller unified;
 };
 
+int virCgroupSetValueRaw(const char *path,
+                         const char *value);
+
+int virCgroupGetValueRaw(const char *path,
+                         char **value);
+
 int virCgroupSetValueStr(virCgroupPtr group,
                          int controller,
                          const char *key,
-- 
2.21.0

--
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