
On Thursday, 30 March 2017 at 10:03 PM, Martin Kletzander wrote:
Signed-off-by: Martin Kletzander <mkletzan@redhat.com (mailto:mkletzan@redhat.com)> --- src/libvirt_private.syms | 5 +++ src/util/virsysfs.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++ src/util/virsysfs.h | 34 ++++++++++++++++ 3 files changed, 141 insertions(+)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index bcd2506ef7c9..0b3b41516fe6 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2623,6 +2623,11 @@ virVasprintfInternal; # util/virsysfs.h virSysfsCpuDirOpen; virSysfsDirOpen; +virSysfsGetCpuCacheValueBitmap; +virSysfsGetCpuCacheValueInt; +virSysfsGetCpuCacheValueScaledInt; +virSysfsGetCpuCacheValueString; +virSysfsGetCpuCacheValueUint; virSysfsGetCpuValueBitmap; virSysfsGetCpuValueInt; virSysfsGetCpuValueString; diff --git a/src/util/virsysfs.c b/src/util/virsysfs.c index a8550bbfbc26..2a64be4f5f73 100644 --- a/src/util/virsysfs.c +++ b/src/util/virsysfs.c @@ -221,6 +221,108 @@ virSysfsCpuDirOpen(unsigned int cpu, }
+/* + * Per-CPU/cache getters + */ +int +virSysfsGetCpuCacheValueInt(unsigned int cpu, + const char *cache, + const char *file, + int *value)
It will be helpful that we describe what cache, file looks like even it’s straight enough to reading code.
+{ + char *path = NULL; + int ret = -1; + + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s",
cpu/cpu0/cache/index3/size
+ sysfs_system_path, cpu, cache, file) < 0) + return -1; + + ret = virFileReadValueInt(path, value); + + VIR_FREE(path); + return ret; +} + + +int +virSysfsGetCpuCacheValueUint(unsigned int cpu, + const char *cache, + const char *file, + unsigned int *value) +{ + char *path = NULL; + int ret = -1; + + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s", + sysfs_system_path, cpu, cache, file) < 0) + return -1; + + ret = virFileReadValueUint(path, value); + + VIR_FREE(path); + return ret; +} + +int +virSysfsGetCpuCacheValueScaledInt(unsigned int cpu, + const char *cache, + const char *file, + unsigned long long *value)
Can we add notes here to tell the value is in unite KiB ?
+{ + char *path = NULL; + int ret = -1; + + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s", + sysfs_system_path, cpu, cache, file) < 0) + return -1; + + ret = virFileReadValueScaledInt(path, value); + + VIR_FREE(path); + return ret; +} + + +int +virSysfsGetCpuCacheValueString(unsigned int cpu, + const char *cache, + const char *file, + char **value) +{ + char *path = NULL; + int ret = -1; + + if (virAsprintf(&path, "cpu/cpu%u/cache/%s/%s", cpu, cache, file) < 0) + return -1; + + ret = virSysfsGetValueString(path, value); + + VIR_FREE(path); + return ret; +} + +int +virSysfsGetCpuCacheValueBitmap(unsigned int cpu, + const char *cache, + const char *file, + virBitmapPtr *value) +{ + char *path = NULL; + int ret = -1; + + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s", + sysfs_system_path, cpu, cache, file) < 0) + return -1; + + ret = virFileReadValueBitmap(path, VIR_SYSFS_VALUE_MAXLEN, value); + VIR_FREE(path); + return ret; +} + + +/* + * Per-NUMA node getters + */ int virSysfsGetNodeValueString(unsigned int node, const char *file, diff --git a/src/util/virsysfs.h b/src/util/virsysfs.h index 25bd100ea9cb..92f9111b069f 100644 --- a/src/util/virsysfs.h +++ b/src/util/virsysfs.h @@ -77,6 +77,40 @@ virSysfsCpuDirOpen(unsigned int cpu,
/* + * Per-CPU/cache getters + */ +int +virSysfsGetCpuCacheValueInt(unsigned int cpu, + const char *cache, + const char *file, + int *value); + +int +virSysfsGetCpuCacheValueUint(unsigned int cpu, + const char *cache, + const char *file, + unsigned int *value); + +int +virSysfsGetCpuCacheValueScaledInt(unsigned int cpu, + const char *cache, + const char *file, + unsigned long long *value); + +int +virSysfsGetCpuCacheValueString(unsigned int cpu, + const char *cache, + const char *file, + char **value); + +int +virSysfsGetCpuCacheValueBitmap(unsigned int cpu, + const char *cache, + const char *file, + virBitmapPtr *value); + + +/* * Per-NUMA node getters */ int -- 2.12.2
-- libvir-list mailing list libvir-list@redhat.com (mailto:libvir-list@redhat.com) https://www.redhat.com/mailman/listinfo/libvir-list