All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Carstens <heiko.carstens@de.ibm.com>
To: Karel Zak <kzak@redhat.com>
Cc: util-linux@vger.kernel.org, Heiko Carstens <heiko.carstens@de.ibm.com>
Subject: [PATCH 11/11] [PATCH] lscpu: add Hypervisor to output
Date: Tue, 06 Sep 2011 02:53:02 +0200	[thread overview]
Message-ID: <20110906010201.575705590@de.ibm.com> (raw)
In-Reply-To: 20110906005251.497675140@de.ibm.com

Some vendors have several hypervisors. Therefore it makes sense to not only
print out the hypervisor vendor but also the name of the hypervisor.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
---
 sys-utils/lscpu.c                    |   20 ++++++++++++++++++++
 tests/expected/lscpu/lscpu-s390-lpar |    1 +
 tests/expected/lscpu/lscpu-s390-zvm  |    1 +
 3 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
index 7923cc2..6049c3f 100644
--- a/sys-utils/lscpu.c
+++ b/sys-utils/lscpu.c
@@ -138,6 +138,7 @@ struct lscpu_desc {
 	char	*family;
 	char	*model;
 	char	*virtflag;	/* virtualization flag (vmx, svm) */
+	char	*hypervisor;	/* hypervisor software */
 	int	hyper;		/* hypervisor vendor ID */
 	int	virtype;	/* VIRT_PARA|FULL|NONE ? */
 	char	*mhz;
@@ -666,14 +667,31 @@ read_hypervisor(struct lscpu_desc *desc)
 		char buf[BUFSIZ];
 
 		desc->hyper = HYPER_IBM;
+		desc->hypervisor = "PR/SM";
 		desc->virtype = VIRT_FULL;
 		while (fgets(buf, sizeof(buf), fd) != NULL) {
+			char *str;
+
 			if (!strstr(buf, "Control Program:"))
 				continue;
 			if (!strstr(buf, "KVM"))
 				desc->hyper = HYPER_IBM;
 			else
 				desc->hyper = HYPER_KVM;
+			str = strchr(buf, ':');
+			if (!str)
+				continue;
+			if (asprintf(&str, str + 1) == -1)
+				errx(EXIT_FAILURE, _("failed to allocate memory"));
+			/* remove leading, trailing and repeating whitespace */
+			while (*str == ' ')
+				str++;
+			desc->hypervisor = str;
+			str += strlen(str) - 1;
+			while ((*str == '\n') || (*str == ' '))
+				*(str--) = '\0';
+			while (str = strstr(desc->hypervisor, "  "))
+				memmove(str, str + 1, strlen(str));
 		}
 		fclose(fd);
 	}
@@ -1259,6 +1277,8 @@ print_readable(struct lscpu_desc *desc, struct lscpu_modifier *mod)
 		else if (!strcmp(desc->virtflag, "vmx"))
 			print_s(_("Virtualization:"), "VT-x");
 	}
+	if (desc->hypervisor)
+		print_s(_("Hypervisor:"), desc->hypervisor);
 	if (desc->hyper) {
 		print_s(_("Hypervisor vendor:"), hv_vendors[desc->hyper]);
 		print_s(_("Virtualization type:"), virt_types[desc->virtype]);
diff --git a/tests/expected/lscpu/lscpu-s390-lpar b/tests/expected/lscpu/lscpu-s390-lpar
index 600fd3f..0799ab9 100644
--- a/tests/expected/lscpu/lscpu-s390-lpar
+++ b/tests/expected/lscpu/lscpu-s390-lpar
@@ -8,6 +8,7 @@ Socket(s) per book:    6
 Book(s):               4
 Vendor ID:             IBM/S390
 BogoMIPS:              14367.00
+Hypervisor:            PR/SM
 Hypervisor vendor:     IBM
 Virtualization type:   full
 Dispatching mode:      vertical
diff --git a/tests/expected/lscpu/lscpu-s390-zvm b/tests/expected/lscpu/lscpu-s390-zvm
index 9ce22d4..04dcf76 100644
--- a/tests/expected/lscpu/lscpu-s390-zvm
+++ b/tests/expected/lscpu/lscpu-s390-zvm
@@ -7,6 +7,7 @@ Socket(s) per book:    1
 Book(s):               4
 Vendor ID:             IBM/S390
 BogoMIPS:              14367.00
+Hypervisor:            z/VM 6.1.0
 Hypervisor vendor:     IBM
 Virtualization type:   full
 Dispatching mode:      horizontal
-- 
1.7.5.4

  parent reply	other threads:[~2011-09-06  0:53 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-06  0:52 [PATCH 00/11] various lscpu changes Heiko Carstens
2011-09-06  0:52 ` [PATCH 01/11] [PATCH] lscpu: remove comma operator Heiko Carstens
2011-09-06  0:52 ` [PATCH 02/11] [PATCH] lscpu: fix cache output for extended parsable output Heiko Carstens
2011-09-06  0:52 ` [PATCH 03/11] [PATCH] lscpu: simplify cache column output function Heiko Carstens
2011-09-06  0:52 ` [PATCH 04/11] [PATCH] lscpu: allow read_cache() to be called for offline cpus Heiko Carstens
2011-09-06  0:52 ` [PATCH 05/11] [PATCH] lscpu: add --version option Heiko Carstens
2011-09-06  0:52 ` [PATCH 06/11] [PATCH] lscpu: add human readable extended cpu table output Heiko Carstens
2011-09-06  0:52 ` [PATCH 07/11] [PATCH] lscpu: add configured state to output Heiko Carstens
2011-09-06  0:52 ` [PATCH 08/11] [PATCH] lscpu: add online " Heiko Carstens
2011-09-06  0:53 ` [PATCH 09/11] [PATCH] lscpu: add --all option Heiko Carstens
2011-09-06  0:53 ` [PATCH 10/11] [PATCH] lscpu: add s390 test case Heiko Carstens
2011-09-06  0:53 ` Heiko Carstens [this message]
2011-09-09 22:07 ` [PATCH 00/11] various lscpu changes Karel Zak
2011-09-10 10:25   ` Heiko Carstens
2011-09-12 11:55     ` Karel Zak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110906010201.575705590@de.ibm.com \
    --to=heiko.carstens@de.ibm.com \
    --cc=kzak@redhat.com \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.