On Thursday, 30 March 2017 at 10:03 PM, Martin Kletzander wrote:
Signed-off-by: Martin Kletzander <mkletzan(a)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(a)redhat.com (mailto:libvir-list@redhat.com)
https://www.redhat.com/mailman/listinfo/libvir-list