[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 13/34] scripts/kvm/kvm_stat: Fixup syscall error rep
From: |
Janosch Frank |
Subject: |
[Qemu-devel] [PATCH 13/34] scripts/kvm/kvm_stat: Fixup syscall error reporting |
Date: |
Thu, 10 Dec 2015 13:12:43 +0100 |
In 2008 a patch was written that introduced ctypes.get_errno() and
set_errno() as official interfaces to the libc errno variable. Using
them we can avoid accessing private libc variables.
The patch was included in python 2.6.
Also we need to raise the right exception, with the right parameters
and a helpful message.
---
scripts/kvm/kvm_stat | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index 83d15a1..62ca853 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -287,10 +287,8 @@ filters['kvm_userspace_exit'] = ('reason',
USERSPACE_EXIT_REASONS)
if EXIT_REASONS:
filters['kvm_exit'] = ('exit_reason', EXIT_REASONS)
-libc = ctypes.CDLL('libc.so.6')
+libc = ctypes.CDLL('libc.so.6', use_errno=True)
syscall = libc.syscall
-get_errno = libc.__errno_location
-get_errno.restype = ctypes.POINTER(ctypes.c_int)
class perf_event_attr(ctypes.Structure):
_fields_ = [('type', ctypes.c_uint32),
@@ -351,8 +349,9 @@ class Event(object):
group_leader = group.events[0].fd
fd = _perf_event_open(attr, -1, group.cpu, group_leader, 0)
if fd == -1:
- err = get_errno()[0]
- raise Exception('perf_event_open failed, errno = ' + err.__str__())
+ err = ctypes.get_errno()
+ raise OSError(err, os.os.strerror(err),
+ 'while calling sys_perf_event_open().')
if tracefilter:
fcntl.ioctl(fd, IOCTL_NUMBERS['SET_FILTER'], tracefilter)
self.fd = fd
--
2.3.0
- [Qemu-devel] [PATCH 00/34] kvm_stat: Cleanup and fixup, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 02/34] scripts/kvm/kvm_stat: Replaced os.listdir with os.walk, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 01/34] scripts/kvm/kvm_stat: Cleanup of multiple imports, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 05/34] scripts/kvm/kvm_stat: Mark globals in functions, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 14/34] scripts/kvm/kvm_stat: Set sensible no. files rlimit, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 12/34] scripts/kvm/kvm_stat: Moved DebugfsProvider, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 32/34] scripts/kvm/kvm_stat: Fix rlimit for unprivileged users, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 13/34] scripts/kvm/kvm_stat: Fixup syscall error reporting,
Janosch Frank <=
- [Qemu-devel] [PATCH 34/34] scripts/kvm/kvm_stat: Add interactive filtering, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 03/34] scripts/kvm/kvm_stat: Make constants uppercase, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 17/34] scripts/kvm/kvm_stat: Rename _perf_event_open, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 18/34] scripts/kvm/kvm_stat: Introduce properties for providers, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 21/34] scripts/kvm/kvm_stat: Encapsulate filters variable, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 23/34] scripts/kvm/kvm_stat: Cleanup of Groups class, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 16/34] scripts/kvm/kvm_stat: Make cpu detection a function, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 26/34] scripts/kvm/kvm_stat: Remove unneeded X86_EXIT_REASONS, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 10/34] scripts/kvm/kvm_stat: Fix spaces around keyword assignments, Janosch Frank, 2015/12/10