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