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