qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PULL 26/49] scripts/kvm/kvm_stat: Cleanup cpu list retriev


From: Paolo Bonzini
Subject: [Qemu-devel] [PULL 26/49] scripts/kvm/kvm_stat: Cleanup cpu list retrieval
Date: Tue, 26 Jan 2016 14:46:58 +0100

From: Janosch Frank <address@hidden>

Reading /sys/devices/system/cpu/online makes opening the cpu
directories unnecessary and works on more/older systems.

Signed-off-by: Janosch Frank <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
 scripts/kvm/kvm_stat | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index 032e491..083dd2f 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -280,18 +280,27 @@ def walkdir(path):
     return next(os.walk(path))
 
 
+def parse_int_list(list_string):
+    """Returns an int list from a string of comma separated integers and
+    integer ranges."""
+    integers = []
+    members = list_string.split(',')
+
+    for member in members:
+        if '-' not in member:
+            integers.append(int(member))
+        else:
+            int_range = member.split('-')
+            integers.extend(range(int(int_range[0]),
+                                  int(int_range[1]) + 1))
+
+    return integers
+
+
 def get_online_cpus():
-    cpulist = []
-    pattern = r'cpu([0-9]+)'
-    basedir = '/sys/devices/system/cpu'
-    for entry in os.listdir(basedir):
-        match = re.match(pattern, entry)
-        if not match:
-            continue
-        path = os.path.join(basedir, entry, 'online')
-        if os.path.isfile(path) and open(path).read().strip() == '1':
-            cpulist.append(int(match.group(1)))
-    return cpulist
+    with open('/sys/devices/system/cpu/online') as cpu_list:
+        cpu_string = cpu_list.readline()
+        return parse_int_list(cpu_string)
 
 filters = {}
 filters['kvm_userspace_exit'] = ('reason', USERSPACE_EXIT_REASONS)
-- 
1.8.3.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]