[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 13/34] scripts/kvm/kvm_stat: Fixup syscall error
From: |
Janosch Frank |
Subject: |
[Qemu-devel] [PATCH v2 13/34] scripts/kvm/kvm_stat: Fixup syscall error reporting |
Date: |
Mon, 11 Jan 2016 16:17: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.
Signed-off-by: Janosch Frank <address@hidden>
---
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 b5422f8..457624d 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.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 v2 02/34] scripts/kvm/kvm_stat: Replaced os.listdir with os.walk, (continued)
- [Qemu-devel] [PATCH v2 02/34] scripts/kvm/kvm_stat: Replaced os.listdir with os.walk, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 08/34] scripts/kvm/kvm_stat: Improve debugfs access checking, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 29/34] scripts/kvm/kvm_stat: Cleanup and pre-init perf_event_attr, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 03/34] scripts/kvm/kvm_stat: Make constants uppercase, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 06/34] scripts/kvm/kvm_stat: Invert dictionaries, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 10/34] scripts/kvm/kvm_stat: Fix spaces around keyword assignments, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 30/34] scripts/kvm/kvm_stat: Read event values as u64, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 31/34] scripts/kvm/kvm_stat: Fix rlimit for unprivileged users, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 13/34] scripts/kvm/kvm_stat: Fixup syscall error reporting,
Janosch Frank <=
- [Qemu-devel] [PATCH v2 05/34] scripts/kvm/kvm_stat: Mark globals in functions, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 14/34] scripts/kvm/kvm_stat: Set sensible no. files rlimit, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 24/34] scripts/kvm/kvm_stat: Cleanup of Event class, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 20/34] scripts/kvm/kvm_stat: Cleanup cpu list retrieval, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 34/34] scripts/kvm/kvm_stat: Add optparse description, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 21/34] scripts/kvm/kvm_stat: Encapsulate filters variable, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 27/34] scripts/kvm/kvm_stat: Make tui function a class, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 28/34] scripts/kvm/kvm_stat: Fix output formatting, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 32/34] scripts/kvm/kvm_stat: Fixup filtering, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 26/34] scripts/kvm/kvm_stat: Remove unneeded X86_EXIT_REASONS, Janosch Frank, 2016/01/11