All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wainer dos Santos Moschetta <wainersm@redhat.com>
To: qemu-devel@nongnu.org
Cc: fam@euphon.net, ehabkost@redhat.com, philmd@redhat.com,
	jsnow@redhat.com, crosa@redhat.com, alex.bennee@linaro.org
Subject: [PATCH v4 2/5] python/qemu: accel: Add list_accel() method
Date: Mon, 16 Dec 2019 16:14:35 -0300	[thread overview]
Message-ID: <20191216191438.93418-3-wainersm@redhat.com> (raw)
In-Reply-To: <20191216191438.93418-1-wainersm@redhat.com>

Since commit cbe6d6365a48 the command `qemu -accel help` returns
the list of accelerators enabled in the QEMU binary. This adds
the list_accel() method which return that same list.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
---
 python/qemu/accel.py | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/python/qemu/accel.py b/python/qemu/accel.py
index cbeac10dd1..7395cee793 100644
--- a/python/qemu/accel.py
+++ b/python/qemu/accel.py
@@ -14,7 +14,11 @@ accelerators.
 # the COPYING file in the top-level directory.
 #
 
+import logging
 import os
+import subprocess
+
+LOG = logging.getLogger(__name__)
 
 # Mapping host architecture to any additional architectures it can
 # support which often includes its 32 bit cousin.
@@ -23,6 +27,25 @@ ADDITIONAL_ARCHES = {
     "aarch64" : "armhf"
 }
 
+def list_accel(qemu_bin):
+    """
+    List accelerators enabled in the QEMU binary.
+
+    @param qemu_bin (str): path to the QEMU binary.
+    @raise Exception: if failed to run `qemu -accel help`
+    @return a list of accelerator names.
+    """
+    if not qemu_bin:
+        return []
+    try:
+        out = subprocess.check_output([qemu_bin, '-accel', 'help'],
+                                      universal_newlines=True)
+    except:
+        LOG.debug("Failed to get the list of accelerators in %s", qemu_bin)
+        raise
+    # Skip the first line which is the header.
+    return [acc.strip() for acc in out.splitlines()[1:]]
+
 def kvm_available(target_arch=None):
     host_arch = os.uname()[4]
     if target_arch and target_arch != host_arch:
-- 
2.23.0



  parent reply	other threads:[~2019-12-16 19:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-16 19:14 [PATCH v4 0/5] python/qemu: New accel module and improvements Wainer dos Santos Moschetta
2019-12-16 19:14 ` [PATCH v4 1/5] python/qemu: Move kvm_available() to its own module Wainer dos Santos Moschetta
2019-12-16 19:14 ` Wainer dos Santos Moschetta [this message]
2019-12-16 23:31   ` [PATCH v4 2/5] python/qemu: accel: Add list_accel() method Cleber Rosa
2019-12-16 19:14 ` [PATCH v4 3/5] python/qemu: accel: Strengthen kvm_available() checks Wainer dos Santos Moschetta
2019-12-16 19:14 ` [PATCH v4 4/5] python/qemu: accel: Add tcg_available() method Wainer dos Santos Moschetta
2019-12-16 19:14 ` [PATCH v4 5/5] python/qemu: Remove unneeded imports in __init__ Wainer dos Santos Moschetta
2019-12-16 23:44 ` [PATCH v4 0/5] python/qemu: New accel module and improvements Cleber Rosa

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=20191216191438.93418-3-wainersm@redhat.com \
    --to=wainersm@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.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.