usertools: fix CPU layout with python 3

These differences in Python 3 were causing errors:
- xrange is replaced by range
- dict values are a view (instead of list)
- has_key is removed

Fixes: deb87e6777 ("usertools: use sysfs for CPU layout")
Fixes: 63985c5f10 ("usertools: fix CPU layout for more than 2 threads")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
This commit is contained in:
Thomas Monjalon 2017-04-30 16:11:40 +02:00
parent df86b009dd
commit c9208f1dc9

View File

@ -35,6 +35,10 @@
# #
from __future__ import print_function from __future__ import print_function
import sys import sys
try:
xrange # Python 2
except NameError:
xrange = range # Python 3
sockets = [] sockets = []
cores = [] cores = []
@ -72,7 +76,7 @@
print("") print("")
max_processor_len = len(str(len(cores) * len(sockets) * 2 - 1)) max_processor_len = len(str(len(cores) * len(sockets) * 2 - 1))
max_thread_count = len(core_map.values()[0]) max_thread_count = len(list(core_map.values())[0])
max_core_map_len = (max_processor_len * max_thread_count) \ max_core_map_len = (max_processor_len * max_thread_count) \
+ len(", ") * (max_thread_count - 1) \ + len(", ") * (max_thread_count - 1) \
+ len('[]') + len('Socket ') + len('[]') + len('Socket ')
@ -92,7 +96,7 @@
for c in cores: for c in cores:
output = "Core %s" % str(c).ljust(max_core_id_len) output = "Core %s" % str(c).ljust(max_core_id_len)
for s in sockets: for s in sockets:
if core_map.has_key((s,c)): if (s,c) in core_map:
output += " " + str(core_map[(s, c)]).ljust(max_core_map_len) output += " " + str(core_map[(s, c)]).ljust(max_core_map_len)
else: else:
output += " " * (max_core_map_len + 1) output += " " * (max_core_map_len + 1)