Re: [libvirt PATCH 3/6] hostcpu: Implement virHostCPUGetSignature for x86

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

 



On a Monday in 2020, Jiri Denemark wrote:
Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx>
---
src/util/virhostcpu.c                         | 50 +++++++++++++++++--
.../linux-x86_64-test1.signature              |  1 +
.../linux-x86_64-test2.signature              |  1 +
.../linux-x86_64-test3.signature              |  1 +
.../linux-x86_64-test4.signature              |  1 +
.../linux-x86_64-test5.signature              |  1 +
.../linux-x86_64-test6.signature              |  1 +
.../linux-x86_64-test7.signature              |  1 +
.../linux-x86_64-test8.signature              |  1 +
.../linux-x86_64-with-die.signature           |  1 +
10 files changed, 56 insertions(+), 3 deletions(-)
create mode 100644 tests/virhostcpudata/linux-x86_64-test1.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test2.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test3.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test4.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test5.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test6.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test7.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-test8.signature
create mode 100644 tests/virhostcpudata/linux-x86_64-with-die.signature

diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index bfef022f64..851c0015f7 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -1418,10 +1418,54 @@ virHostCPUGetTscInfo(void)
          (defined(__linux__) || defined(__FreeBSD__)) */

int
-virHostCPUReadSignature(virArch arch G_GNUC_UNUSED,
-                        FILE *cpuinfo G_GNUC_UNUSED,
-                        char **signature G_GNUC_UNUSED)
+virHostCPUReadSignature(virArch arch,
+                        FILE *cpuinfo,
+                        char **signature)
{
+    size_t lineLen = 1024;
+    g_autofree char *line = g_new0(char, lineLen);
+    g_autofree char *vendor = NULL;
+    g_autofree char *name = NULL;
+    g_autofree char *family = NULL;
+    g_autofree char *model = NULL;
+    g_autofree char *stepping = NULL;
+
+    if (!ARCH_IS_X86(arch))
+        return 0;
+
+    while (fgets(line, lineLen, cpuinfo)) {
+       g_auto(GStrv) parts = g_strsplit(line, ": ", 2);

Indendation

+
+        if (g_strv_length(parts) != 2)
+            continue;
+
+        g_strstrip(parts[0]);
+        g_strstrip(parts[1]);
+
+        if (STREQ(parts[0], "vendor_id")) {
+            if (!vendor)
+                vendor = g_steal_pointer(&parts[1]);
+        } else if (STREQ(parts[0], "model name")) {
+            if (!name)
+                name = g_steal_pointer(&parts[1]);
+        } else if (STREQ(parts[0], "cpu family")) {
+            if (!family)
+                family = g_steal_pointer(&parts[1]);
+        } else if (STREQ(parts[0], "model")) {
+            if (!model)
+                model = g_steal_pointer(&parts[1]);
+        } else if (STREQ(parts[0], "stepping")) {
+            if (!stepping)
+                stepping = g_steal_pointer(&parts[1]);
+        }
+
+        if (vendor && name && family && model && stepping) {
+            *signature = g_strdup_printf("%s, %s, family: %s, model: %s, stepping: %s",
+                                         vendor, name, family, model, stepping);
+            return 0;
+        }

Attachment: signature.asc
Description: PGP signature


[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