aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorHeinz Graalfs <graalfs@linux.vnet.ibm.com>2012-10-29 02:13:20 +0000
committerAlexander Graf <agraf@suse.de>2012-10-29 19:41:55 +0100
commit1b3e6f88dc151578acb6158e22570cf3ee7cbb69 (patch)
tree1f3694aff150c9ea9332e0716c0d1af993063696 /scripts
parent235a3f0bed3584fe65079ffa07c7a842971f261e (diff)
downloadqemu-1b3e6f88dc151578acb6158e22570cf3ee7cbb69.zip
qemu-1b3e6f88dc151578acb6158e22570cf3ee7cbb69.tar.gz
qemu-1b3e6f88dc151578acb6158e22570cf3ee7cbb69.tar.bz2
s390/kvm_stat: correct sys_perf_event_open syscall number
Correct sys_perf_event_open syscall number for s390 architecture - the hardcoded syscall number 298 is for x86 but should be different for other architectures. In case we figure out via /proc/cpuinfo that we are running on s390 the appropriate syscall number is used from map syscall_numbers; other architectures can extend this. Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/kvm/kvm_stat11
1 files changed, 9 insertions, 2 deletions
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index e8d68f0..762544b 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -170,6 +170,12 @@ vendor_exit_reasons = {
'IBM/S390': s390_exit_reasons,
}
+syscall_numbers = {
+ 'IBM/S390': 331,
+}
+
+sc_perf_evt_open = 298
+
exit_reasons = None
for line in file('/proc/cpuinfo').readlines():
@@ -177,7 +183,8 @@ for line in file('/proc/cpuinfo').readlines():
for flag in line.split():
if flag in vendor_exit_reasons:
exit_reasons = vendor_exit_reasons[flag]
-
+ if flag in syscall_numbers:
+ sc_perf_evt_open = syscall_numbers[flag]
filters = {
'kvm_exit': ('exit_reason', exit_reasons)
}
@@ -206,7 +213,7 @@ class perf_event_attr(ctypes.Structure):
('bp_len', ctypes.c_uint64),
]
def _perf_event_open(attr, pid, cpu, group_fd, flags):
- return syscall(298, ctypes.pointer(attr), ctypes.c_int(pid),
+ return syscall(sc_perf_evt_open, ctypes.pointer(attr), ctypes.c_int(pid),
ctypes.c_int(cpu), ctypes.c_int(group_fd),
ctypes.c_long(flags))