diff --git a/src/Makefile.am b/src/Makefile.am
index f68fc1de2de3924f14749325a8efea9077c428a0..f95f30e2fd8d08d6db79a63e0f7182b167004cc3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -177,7 +177,6 @@ UTIL_SOURCES = \
util/virstorageencryption.c util/virstorageencryption.h \
util/virstoragefile.c util/virstoragefile.h \
util/virstring.h util/virstring.c \
- util/virsysfs.c util/virsysfs.h util/virsysfspriv.h \
util/virsysinfo.c util/virsysinfo.h util/virsysinfopriv.h \
util/virsystemd.c util/virsystemd.h util/virsystemdpriv.h \
util/virthread.c util/virthread.h \
@@ -2651,7 +2650,6 @@ libvirt_setuid_rpc_client_la_SOURCES = \
util/virrandom.c \
util/virsocketaddr.c \
util/virstring.c \
- util/virsysfs.c \
util/virsystemd.c \
util/virtime.c \
util/virthread.c \
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index be95c50cfb67de4d073be5904b4f9def89c80cb8..7ed76e65b1a145825c97e58a736858b1e1229f5d 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -45,7 +45,6 @@
#include "virlog.h"
#include "virnuma.h"
#include "virstring.h"
-#include "virsysfs.h"
#include "virtypedparam.h"
#include "viruuid.h"
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index e6901a8f12ceb392cf8595521c092bfdec804e91..e15d19fa86aae6fafad6a371f9b515f8398b5dbd 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1654,6 +1654,8 @@ virFileReadLimFD;
virFileReadLink;
virFileReadValueBitmap;
virFileReadValueInt;
+virFileReadValueScaledInt;
+virFileReadValueString;
virFileReadValueUint;
virFileRelLinkPointsTo;
virFileRemove;
@@ -2643,20 +2645,6 @@ virTrimSpaces;
virVasprintfInternal;
-# util/virsysfs.h
-virSysfsGetCpuValueBitmap;
-virSysfsGetCpuValueInt;
-virSysfsGetCpuValueString;
-virSysfsGetCpuValueUint;
-virSysfsGetNodeValueBitmap;
-virSysfsGetNodeValueString;
-virSysfsGetSystemPath;
-virSysfsGetValueBitmap;
-virSysfsGetValueInt;
-virSysfsGetValueString;
-virSysfsSetSystemPath;
-
-
# util/virsysinfo.h
virSysinfoBaseBoardDefClear;
virSysinfoBIOSDefFree;
diff --git a/src/util/virfile.c b/src/util/virfile.c
index cbfa3849d79319692f0c8313e88bf0797e10f71d..ea44a647ce7cdb75caa0a20c8e1c3466705f8acd 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -3799,24 +3799,36 @@ virFileComparePaths(const char *p1, const char *p2)
/**
* virFileReadValueInt:
- * @path: file to read from
* @value: pointer to int to be filled in with the value
+ * @format, ...: file to read from
*
- * Read int from @path and put it into @value.
+ * Read int from @format and put it into @value.
*
* Return -2 for non-existing file, -1 on other errors and 0 if everything went
* fine.
*/
int
-virFileReadValueInt(const char *path, int *value)
+virFileReadValueInt(int *value, const char *format, ...)
{
+ int ret = -1;
char *str = NULL;
+ char *path = NULL;
+ va_list ap;
- if (!virFileExists(path))
- return -2;
+ va_start(ap, format);
+ if (virVasprintf(&path, format, ap) < 0) {
+ va_end(ap);
+ goto cleanup;
+ }
+ va_end(ap);
- if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
- return -1;
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ if (virFileReadAll(path, INT_BUFSIZE_BOUND(*value), &str) < 0)
+ goto cleanup;
virStringTrimOptionalNewline(str);
@@ -3824,83 +3836,205 @@ virFileReadValueInt(const char *path, int *value)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid integer value '%s' in file '%s'"),
str, path);
- return -1;
+ goto cleanup;
}
+ ret = 0;
+ cleanup:
+ VIR_FREE(path);
VIR_FREE(str);
-
- return 0;
+ return ret;
}
/**
* virFileReadValueUint:
- * @path: file to read from
- * @value: pointer to unsigned int to be filled in with the value
+ * @value: pointer to int to be filled in with the value
+ * @format, ...: file to read from
*
- * Read int from @path and put it into @value.
+ * Read unsigned int from @format and put it into @value.
*
* Return -2 for non-existing file, -1 on other errors and 0 if everything went
* fine.
*/
int
-virFileReadValueUint(const char *path, unsigned int *value)
+virFileReadValueUint(unsigned int *value, const char *format, ...)
{
+ int ret = -1;
char *str = NULL;
+ char *path = NULL;
+ va_list ap;
- if (!virFileExists(path))
- return -2;
+ va_start(ap, format);
+ if (virVasprintf(&path, format, ap) < 0) {
+ va_end(ap);
+ goto cleanup;
+ }
+ va_end(ap);
- if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
- return -1;
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ if (virFileReadAll(path, INT_BUFSIZE_BOUND(*value), &str) < 0)
+ goto cleanup;
virStringTrimOptionalNewline(str);
- if (virStrToLong_uip(str, NULL, 10, value)) {
+ if (virStrToLong_uip(str, NULL, 10, value) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid unsigned integer value '%s' in file '%s'"),
str, path);
- return -1;
+ goto cleanup;
}
+ ret = 0;
+ cleanup:
+ VIR_FREE(path);
VIR_FREE(str);
+ return ret;
+}
- return 0;
+
+/**
+ * virFileReadValueScaledInt:
+ * @value: pointer to unsigned long long int to be filled in with the value
+ * @format, ...: file to read from
+ *
+ * Read unsigned scaled int from @format and put it into @value.
+ *
+ * Return -2 for non-existing file, -1 on other errors and 0 if everything went
+ * fine.
+ */
+int
+virFileReadValueScaledInt(unsigned long long *value, const char *format, ...)
+{
+ int ret = -1;
+ char *str = NULL;
+ char *endp = NULL;
+ char *path = NULL;
+ va_list ap;
+
+ va_start(ap, format);
+ if (virVasprintf(&path, format, ap) < 0) {
+ va_end(ap);
+ goto cleanup;
+ }
+ va_end(ap);
+
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ if (virFileReadAll(path, INT_BUFSIZE_BOUND(*value), &str) < 0)
+ goto cleanup;
+
+ virStringTrimOptionalNewline(str);
+
+ if (virStrToLong_ullp(str, &endp, 10, value) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Invalid unsigned scaled integer value '%s' in file '%s'"),
+ str, path);
+ goto cleanup;
+ }
+
+ ret = virScaleInteger(value, endp, 1024, ULLONG_MAX);
+ cleanup:
+ VIR_FREE(path);
+ VIR_FREE(str);
+ return ret;
}
+/* Arbitrarily sized number, feel free to change, but the function should be
+ * used for small, interface-like files, so it should not be huge (subjective) */
+#define VIR_FILE_READ_VALUE_STRING_MAX 4096
+
/**
* virFileReadValueBitmap:
- * @path: file to read from
- * @value: double pointer to virBitmap to be allocated and filled in with the
- * value
+ * @value: pointer to virBitmapPtr to be allocated and filled in with the value
+ * @format, ...: file to read from
*
- * Read int from @path and put it into @value.
+ * Read int from @format and put it into @value.
*
* Return -2 for non-existing file, -1 on other errors and 0 if everything went
* fine.
*/
int
-virFileReadValueBitmap(const char *path,
- int maxlen,
- virBitmapPtr *value)
+virFileReadValueBitmap(virBitmapPtr *value, const char *format, ...)
{
- char *buf = NULL;
int ret = -1;
+ char *str = NULL;
+ char *path = NULL;
+ va_list ap;
- if (!virFileExists(path))
- return -2;
+ va_start(ap, format);
+ if (virVasprintf(&path, format, ap) < 0) {
+ va_end(ap);
+ goto cleanup;
+ }
+ va_end(ap);
- if (virFileReadAll(path, maxlen, &buf) < 0)
+ if (!virFileExists(path)) {
+ ret = -2;
goto cleanup;
+ }
- virStringTrimOptionalNewline(buf);
+ if (virFileReadAll(path, VIR_FILE_READ_VALUE_STRING_MAX, &str) < 0)
+ goto cleanup;
- *value = virBitmapParseUnlimited(buf);
+ virStringTrimOptionalNewline(str);
+
+ *value = virBitmapParseUnlimited(str);
if (!*value)
goto cleanup;
ret = 0;
cleanup:
- VIR_FREE(buf);
+ VIR_FREE(path);
+ VIR_FREE(str);
+ return ret;
+}
+
+/**
+ * virFileReadValueString:
+ * @value: pointer to char * to be allocated and filled in with the value
+ * @format, ...: file to read from
+ *
+ * Read string from @format and put it into @value. Don't get this mixed with
+ * virFileReadAll(). This function is a wrapper over it with the behaviour
+ * aligned to other virFileReadValue* functions
+ *
+ * Return -2 for non-existing file, -1 on other errors and 0 if everything went
+ * fine.
+ */
+int
+virFileReadValueString(char **value, const char *format, ...)
+{
+ int ret = -1;
+ char *str = NULL;
+ char *path = NULL;
+ va_list ap;
+
+ va_start(ap, format);
+ if (virVasprintf(&path, format, ap) < 0) {
+ va_end(ap);
+ goto cleanup;
+ }
+ va_end(ap);
+
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ ret = virFileReadAll(path, VIR_FILE_READ_VALUE_STRING_MAX, value);
+
+ if (*value)
+ virStringTrimOptionalNewline(*value);
+ cleanup:
+ VIR_FREE(path);
+ VIR_FREE(str);
return ret;
}
diff --git a/src/util/virfile.h b/src/util/virfile.h
index 41c25a2b5f4bc36882b9bb01bceed75c8598fa53..38e938f87f12f47fb0286d7c4c8819b295375d38 100644
--- a/src/util/virfile.h
+++ b/src/util/virfile.h
@@ -336,8 +336,16 @@ int virFileCopyACLs(const char *src,
int virFileComparePaths(const char *p1, const char *p2);
-int virFileReadValueInt(const char *path, int *value);
-int virFileReadValueUint(const char *path, unsigned int *value);
-int virFileReadValueBitmap(const char *path, int maxlen, virBitmapPtr *value);
+int virFileReadValueInt(int *value, const char *format, ...)
+ ATTRIBUTE_FMT_PRINTF(2, 3);
+int virFileReadValueUint(unsigned int *value, const char *format, ...)
+ ATTRIBUTE_FMT_PRINTF(2, 3);
+int virFileReadValueBitmap(virBitmapPtr *value, const char *format, ...)
+ ATTRIBUTE_FMT_PRINTF(2, 3);
+int virFileReadValueScaledInt(unsigned long long *value, const char *format, ...)
+ ATTRIBUTE_FMT_PRINTF(2, 3);
+int virFileReadValueString(char **value, const char *format, ...)
+ ATTRIBUTE_FMT_PRINTF(2, 3);
+
#endif /* __VIR_FILE_H */
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index 8397307e81f968016d1aee27a5dd940bda112c23..317c52410a0b6b6ac64ddd1a94078389f26289c8 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -56,7 +56,6 @@
#include "virfile.h"
#include "virtypedparam.h"
#include "virstring.h"
-#include "virsysfs.h"
#include "virnuma.h"
#include "virlog.h"
@@ -192,6 +191,7 @@ virHostCPUGetStatsFreeBSD(int cpuNum,
#ifdef __linux__
# define CPUINFO_PATH "/proc/cpuinfo"
# define PROCSTAT_PATH "/proc/stat"
+# define SYSFS_SYSTEM_PATH "/sys/devices/system"
# define VIR_HOST_CPU_MASK_LEN 1024
# define LINUX_NB_CPU_STATS 4
@@ -205,7 +205,9 @@ virHostCPUCountThreadSiblings(unsigned int cpu)
char *str = NULL;
size_t i;
- rv = virSysfsGetCpuValueString(cpu, "topology/thread_siblings", &str);
+ rv = virFileReadValueString(&str,
+ "%s/cpu/cpu%u/topology/thread_siblings",
+ SYSFS_SYSTEM_PATH, cpu);
if (rv == -2) {
ret = 1;
goto cleanup;
@@ -227,9 +229,9 @@ int
virHostCPUGetSocket(unsigned int cpu, unsigned int *socket)
{
int tmp;
- int ret = virSysfsGetCpuValueInt(cpu,
- "topology/physical_package_id",
- &tmp);
+ int ret = virFileReadValueInt(&tmp,
+ "%s/cpu/cpu%u/topology/physical_package_id",
+ SYSFS_SYSTEM_PATH, cpu);
/* If the file is not there, it's 0 */
if (ret == -2)
@@ -251,7 +253,9 @@ virHostCPUGetSocket(unsigned int cpu, unsigned int *socket)
int
virHostCPUGetCore(unsigned int cpu, unsigned int *core)
{
- int ret = virSysfsGetCpuValueUint(cpu, "topology/core_id", core);
+ int ret = virFileReadValueUint(core,
+ "%s/cpu/cpu%u/topology/core_id",
+ SYSFS_SYSTEM_PATH, cpu);
/* If the file is not there, it's 0 */
if (ret == -2)
@@ -268,7 +272,9 @@ virHostCPUGetSiblingsList(unsigned int cpu)
virBitmapPtr ret = NULL;
int rv = -1;
- rv = virSysfsGetCpuValueBitmap(cpu, "topology/thread_siblings_list", &ret);
+ rv = virFileReadValueBitmap(&ret,
+ "%s/cpu/cpu%u/topology/thread_siblings_list",
+ SYSFS_SYSTEM_PATH, cpu);
if (rv == -2) {
/* If the file doesn't exist, the threadis its only sibling */
ret = virBitmapNew(cpu + 1);
@@ -615,7 +621,7 @@ virHostCPUGetInfoPopulateLinux(FILE *cpuinfo,
/* OK, we've parsed clock speed out of /proc/cpuinfo. Get the
* core, node, socket, thread and topology information from /sys
*/
- if (virAsprintf(&sysfs_nodedir, "%s/node", virSysfsGetSystemPath()) < 0)
+ if (virAsprintf(&sysfs_nodedir, "%s/node", SYSFS_SYSTEM_PATH) < 0)
goto cleanup;
if (virDirOpenQuiet(&nodedir, sysfs_nodedir) < 0) {
@@ -659,8 +665,8 @@ virHostCPUGetInfoPopulateLinux(FILE *cpuinfo,
(*nodes)++;
- if (virAsprintf(&sysfs_cpudir, "%s/node/%s",
- virSysfsGetSystemPath(), nodedirent->d_name) < 0)
+ if (virAsprintf(&sysfs_cpudir, "%s/node/%s", SYSFS_SYSTEM_PATH,
+ nodedirent->d_name) < 0)
goto cleanup;
if ((nodecpus = virHostCPUParseNode(sysfs_cpudir, arch,
@@ -694,7 +700,7 @@ virHostCPUGetInfoPopulateLinux(FILE *cpuinfo,
fallback:
VIR_FREE(sysfs_cpudir);
- if (virAsprintf(&sysfs_cpudir, "%s/cpu", virSysfsGetSystemPath()) < 0)
+ if (virAsprintf(&sysfs_cpudir, "%s/cpu", SYSFS_SYSTEM_PATH) < 0)
goto cleanup;
if ((nodecpus = virHostCPUParseNode(sysfs_cpudir, arch,
@@ -841,7 +847,7 @@ virHostCPUParseCountLinux(void)
char *tmp;
int ret = -1;
- if (virSysfsGetValueString("cpu/present", &str) < 0)
+ if (virFileReadValueString(&str, "%s/cpu/present", SYSFS_SYSTEM_PATH) < 0)
return -1;
tmp = str;
@@ -866,8 +872,9 @@ int
virHostCPUGetOnline(unsigned int cpu, bool *online)
{
unsigned int tmp = 0;
- int ret = virSysfsGetCpuValueUint(cpu, "online", &tmp);
-
+ int ret = virFileReadValueUint(&tmp,
+ "%s/cpu/cpu%u/online",
+ SYSFS_SYSTEM_PATH, cpu);
/* If the file is not there, it's online (doesn't support offlining) */
if (ret == -2)
@@ -1032,7 +1039,7 @@ virHostCPUGetPresentBitmap(void)
#ifdef __linux__
virBitmapPtr ret = NULL;
- virSysfsGetValueBitmap("cpu/present", &ret);
+ virFileReadValueBitmap(&ret, "%s/cpu/present", SYSFS_SYSTEM_PATH);
return ret;
#else
@@ -1048,7 +1055,7 @@ virHostCPUGetOnlineBitmap(void)
#ifdef __linux__
virBitmapPtr ret = NULL;
- virSysfsGetValueBitmap("cpu/online", &ret);
+ virFileReadValueBitmap(&ret, "%s/cpu/online", SYSFS_SYSTEM_PATH);
return ret;
#else
diff --git a/src/util/virsysfs.c b/src/util/virsysfs.c
deleted file mode 100644
index 6df45a0e36d9966931cb7cf3105aa89f9fb962c5..0000000000000000000000000000000000000000
--- a/src/util/virsysfs.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * virsysfs.c: Helper functions for manipulating sysfs files
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * .
- *
- * Author: Martin Kletzander
- */
-
-#include
-
-#include "internal.h"
-
-#include "virsysfspriv.h"
-
-#include "viralloc.h"
-#include "virfile.h"
-#include "virlog.h"
-#include "virstring.h"
-
-#define VIR_FROM_THIS VIR_FROM_NONE
-
-VIR_LOG_INIT("util.sysfs");
-
-
-#define VIR_SYSFS_VALUE_MAXLEN 8192
-#define SYSFS_SYSTEM_PATH "/sys/devices/system"
-
-static const char *sysfs_system_path = SYSFS_SYSTEM_PATH;
-
-
-void virSysfsSetSystemPath(const char *path)
-{
- if (path)
- sysfs_system_path = path;
- else
- sysfs_system_path = SYSFS_SYSTEM_PATH;
-}
-
-
-const char *
-virSysfsGetSystemPath(void)
-{
- return sysfs_system_path;
-}
-
-int
-virSysfsGetValueInt(const char *file,
- int *value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/%s", sysfs_system_path, file) < 0)
- return -1;
-
- ret = virFileReadValueInt(path, value);
-
- VIR_FREE(path);
- return ret;
-}
-
-int
-virSysfsGetValueString(const char *file,
- char **value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/%s", sysfs_system_path, file) < 0)
- return -1;
-
- if (!virFileExists(path)) {
- ret = -2;
- goto cleanup;
- }
-
- if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
- goto cleanup;
-
- virStringTrimOptionalNewline(*value);
-
- ret = 0;
- cleanup:
- VIR_FREE(path);
- return ret;
-}
-
-int
-virSysfsGetValueBitmap(const char *file,
- virBitmapPtr *value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/%s", sysfs_system_path, file) < 0)
- return -1;
-
- ret = virFileReadValueBitmap(path, VIR_SYSFS_VALUE_MAXLEN, value);
- VIR_FREE(path);
- return ret;
-}
-
-int
-virSysfsGetCpuValueInt(unsigned int cpu,
- const char *file,
- int *value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/cpu/cpu%u/%s", sysfs_system_path, cpu, file) < 0)
- return -1;
-
- ret = virFileReadValueInt(path, value);
-
- VIR_FREE(path);
- return ret;
-}
-
-
-int
-virSysfsGetCpuValueUint(unsigned int cpu,
- const char *file,
- unsigned int *value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/cpu/cpu%u/%s", sysfs_system_path, cpu, file) < 0)
- return -1;
-
- ret = virFileReadValueUint(path, value);
-
- VIR_FREE(path);
- return ret;
-}
-
-
-int
-virSysfsGetCpuValueString(unsigned int cpu,
- const char *file,
- char **value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/cpu/cpu%u/%s", sysfs_system_path, cpu, file) < 0)
- return -1;
-
- if (!virFileExists(path)) {
- ret = -2;
- goto cleanup;
- }
-
- if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
- goto cleanup;
-
- ret = 0;
- cleanup:
- VIR_FREE(path);
- return ret;
-}
-
-int
-virSysfsGetCpuValueBitmap(unsigned int cpu,
- const char *file,
- virBitmapPtr *value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/cpu/cpu%u/%s", sysfs_system_path, cpu, file) < 0)
- return -1;
-
- ret = virFileReadValueBitmap(path, VIR_SYSFS_VALUE_MAXLEN, value);
- VIR_FREE(path);
- return ret;
-}
-
-int
-virSysfsGetNodeValueString(unsigned int node,
- const char *file,
- char **value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/node/node%u/%s", sysfs_system_path, node, file) < 0)
- return -1;
-
- if (!virFileExists(path)) {
- ret = -2;
- goto cleanup;
- }
-
- if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
- goto cleanup;
-
- ret = 0;
- cleanup:
- VIR_FREE(path);
- return ret;
-}
-
-int
-virSysfsGetNodeValueBitmap(unsigned int node,
- const char *file,
- virBitmapPtr *value)
-{
- char *path = NULL;
- int ret = -1;
-
- if (virAsprintf(&path, "%s/node/node%u/%s", sysfs_system_path, node, file) < 0)
- return -1;
-
- ret = virFileReadValueBitmap(path, VIR_SYSFS_VALUE_MAXLEN, value);
- VIR_FREE(path);
- return ret;
-}
diff --git a/src/util/virsysfs.h b/src/util/virsysfs.h
deleted file mode 100644
index cd871ff11dd118dd965bc24fbfda1e71a26c0954..0000000000000000000000000000000000000000
--- a/src/util/virsysfs.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * virsysfs.h: Helper functions for manipulating sysfs files
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * .
- *
- * Author: Martin Kletzander
- */
-
-#ifndef __VIR_SYSFS_H__
-# define __VIR_SYSFS_H__
-
-# include "internal.h"
-# include "virbitmap.h"
-
-const char * virSysfsGetSystemPath(void);
-
-int
-virSysfsGetValueInt(const char *file,
- int *value);
-
-int
-virSysfsGetValueString(const char *file,
- char **value);
-
-int
-virSysfsGetValueBitmap(const char *file,
- virBitmapPtr *value);
-
-int
-virSysfsGetCpuValueInt(unsigned int cpu,
- const char *file,
- int *value);
-int
-virSysfsGetCpuValueUint(unsigned int cpu,
- const char *file,
- unsigned int *value);
-
-int
-virSysfsGetCpuValueString(unsigned int cpu,
- const char *file,
- char **value);
-
-int
-virSysfsGetCpuValueBitmap(unsigned int cpu,
- const char *file,
- virBitmapPtr *value);
-
-int
-virSysfsGetNodeValueString(unsigned int node,
- const char *file,
- char **value);
-
-int
-virSysfsGetNodeValueBitmap(unsigned int cpu,
- const char *file,
- virBitmapPtr *value);
-
-#endif /* __VIR_SYSFS_H__*/
diff --git a/src/util/virsysfspriv.h b/src/util/virsysfspriv.h
deleted file mode 100644
index ae9f54a40c2a2a23a030ed9507af0a55db4ef9e8..0000000000000000000000000000000000000000
--- a/src/util/virsysfspriv.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * virsysfspriv.h: Helper functions for manipulating sysfs files
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * .
- *
- * Author: Martin Kletzander
- */
-
-#ifndef __VIR_SYSFS_PRIV_H__
-# define __VIR_SYSFS_PRIV_H__
-
-# include "virsysfs.h"
-
-void virSysfsSetSystemPath(const char *path);
-
-#endif /* __VIR_SYSFS_PRIV_H__*/
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2685098f4343b604443bc525c7c92d169889c59c..5c77b555a82c69c4ba865f10577c96969afc84f2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -930,7 +930,7 @@ virconftest_SOURCES = \
virconftest_LDADD = $(LDADDS)
virhostcputest_SOURCES = \
- virhostcputest.c testutils.h testutils.c
+ virhostcputest.c testutils.h testutils.c virfilewrapper.c
virhostcputest_LDADD = $(LDADDS)
commandtest_SOURCES = \
@@ -1147,7 +1147,7 @@ virhostcpumock_la_LIBADD = $(MOCKLIBS_LIBS)
if WITH_LINUX
vircaps2xmltest_SOURCES = \
- vircaps2xmltest.c testutils.h testutils.c
+ vircaps2xmltest.c testutils.h testutils.c virfilewrapper.c
vircaps2xmltest_LDADD = $(LDADDS)
virnumamock_la_SOURCES = \
@@ -1155,6 +1155,7 @@ virnumamock_la_SOURCES = \
virnumamock_la_CFLAGS = $(AM_CFLAGS)
virnumamock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
virnumamock_la_LIBADD = $(MOCKLIBS_LIBS)
+
else ! WITH_LINUX
EXTRA_DIST += vircaps2xmltest.c virnumamock.c virfilewrapper.c virfilewrapper.h
endif ! WITH_LINUX
diff --git a/tests/vircaps2xmltest.c b/tests/vircaps2xmltest.c
index 670bb8c375b35caf8832c00222b6d5f0b757ea5a..6bf55aae5ba776a6feb3ffd997fdf7b40ab5ac6b 100644
--- a/tests/vircaps2xmltest.c
+++ b/tests/vircaps2xmltest.c
@@ -25,7 +25,7 @@
#include "testutils.h"
#include "capabilities.h"
#include "virbitmap.h"
-#include "virsysfspriv.h"
+#include "virfilewrapper.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -52,7 +52,7 @@ test_virCapabilities(const void *opaque)
abs_srcdir, data->filename) < 0)
goto cleanup;
- virSysfsSetSystemPath(dir);
+ virFileWrapperAddPrefix("/sys/devices/system", dir);
caps = virCapabilitiesNew(data->arch, data->offlineMigrate, data->liveMigrate);
if (!caps)
@@ -61,7 +61,7 @@ test_virCapabilities(const void *opaque)
if (virCapabilitiesInitNUMA(caps) < 0)
goto cleanup;
- virSysfsSetSystemPath(NULL);
+ virFileWrapperClearPrefixes();
if (!(capsXML = virCapabilitiesFormatXML(caps)))
goto cleanup;
diff --git a/tests/virhostcputest.c b/tests/virhostcputest.c
index b415ec5f1b08ad5b438664067cf621e561ccbe43..d1208c3734e0134567aacd0f7863e826adefea93 100644
--- a/tests/virhostcputest.c
+++ b/tests/virhostcputest.c
@@ -8,12 +8,14 @@
#include "testutils.h"
#include "internal.h"
#include "virhostcpupriv.h"
-#include "virsysfspriv.h"
#include "virfile.h"
#include "virstring.h"
+#include "virfilewrapper.h"
#define VIR_FROM_THIS VIR_FROM_NONE
+#define SYSFS_SYSTEM_PATH "/sys/devices/system"
+
#if !(defined __linux__)
int
@@ -178,9 +180,9 @@ linuxTestHostCPU(const void *opaque)
goto cleanup;
}
- virSysfsSetSystemPath(sysfs_prefix);
+ virFileWrapperAddPrefix(SYSFS_SYSTEM_PATH, sysfs_prefix);
result = linuxTestCompareFiles(cpuinfo, data->arch, output);
- virSysfsSetSystemPath(NULL);
+ virFileWrapperRemovePrefix(SYSFS_SYSTEM_PATH);
cleanup:
VIR_FREE(cpuinfo);
diff --git a/tests/virnumamock.c b/tests/virnumamock.c
index 210d15d6adf08c07a726e4c4a663e49dc1317c21..d8f90b81b38b0643a87947ea5c6267f710fad0f0 100644
--- a/tests/virnumamock.c
+++ b/tests/virnumamock.c
@@ -1,5 +1,5 @@
/*
- * virnumamock.c: Mock some virNuma functions using virsysfs
+ * virnumamock.c: Mock some virNuma functions using sysfs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -24,10 +24,11 @@
#include "virfile.h"
#include "viralloc.h"
#include "virstring.h"
-#include "virsysfspriv.h"
#define VIR_FROM_THIS VIR_FROM_NONE
+#define SYSFS_SYSTEM_PATH "/sys/devices/system"
+
static int numa_avail = -1;
@@ -42,7 +43,7 @@ virNumaIsAvailable(void)
if (numa_avail < 0) {
char *sysfs_node_path = NULL;
- if (virAsprintfQuiet(&sysfs_node_path, "%s/node", virSysfsGetSystemPath()) < 0)
+ if (virAsprintfQuiet(&sysfs_node_path, "%s/node", SYSFS_SYSTEM_PATH) < 0)
return false;
numa_avail = virFileExists(sysfs_node_path);
@@ -68,7 +69,7 @@ virNumaGetMaxNode(void)
int ret = -1;
virBitmapPtr map = NULL;
- if (virSysfsGetValueBitmap("node/online", &map) < 0)
+ if (virFileReadValueBitmap(&map, "%s/node/online", SYSFS_SYSTEM_PATH) < 0)
return -1;
ret = virBitmapLastSetBit(map);
@@ -82,7 +83,7 @@ virNumaNodeIsAvailable(int node)
bool ret = false;
virBitmapPtr map = NULL;
- if (virSysfsGetValueBitmap("node/online", &map) < 0)
+ if (virFileReadValueBitmap(&map, "%s/node/online", SYSFS_SYSTEM_PATH) < 0)
return false;
ret = virBitmapIsBitSet(map, node);
@@ -117,7 +118,7 @@ virNumaGetDistances(int node ATTRIBUTE_UNUSED,
}
/*
- * TODO: Adapt virNumaGetHugePageInfo{Path,Dir} to use virsysfs so that the
+ * TODO: Adapt virNumaGetHugePageInfo{Path,Dir} to use sysfs so that the
* paths can be modified and this function can be thrown away and instead we'd
* have copied info from /sys (as we do with /sys/devices/system).
*/
@@ -177,7 +178,9 @@ virNumaGetNodeCPUs(int node, virBitmapPtr *cpus)
int ret = -1;
char *cpulist = NULL;
- if (virSysfsGetNodeValueString(node, "cpulist", &cpulist) < 0)
+ if (virFileReadValueString(&cpulist,
+ "%s/node/node%u/cpulist",
+ SYSFS_SYSTEM_PATH, node) < 0)
return -1;
*cpus = virBitmapParseUnlimited(cpulist);