From: SunKyu Date: Wed, 14 Oct 2015 11:47:05 +0000 (-0700) Subject: perf_reader : add timeout argument to perf_reader_poll X-Git-Tag: v0.1.8~92^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f8eb54536cfcca2385438d828dbc926ff0244608;p=platform%2Fupstream%2Fbcc.git perf_reader : add timeout argument to perf_reader_poll --- diff --git a/src/cc/perf_reader.c b/src/cc/perf_reader.c index c7aa054..9a9e891 100644 --- a/src/cc/perf_reader.c +++ b/src/cc/perf_reader.c @@ -205,11 +205,11 @@ static void event_read(struct perf_reader *reader) { } } -int perf_reader_poll(int num_readers, struct perf_reader **readers) { +int perf_reader_poll(int num_readers, struct perf_reader **readers, int timeout) { struct pollfd pfds[] = { {readers[0]->fd, POLLIN}, }; - if (poll(pfds, num_readers, -1) > 0) { + if (poll(pfds, num_readers, timeout) > 0) { int i; for (i = 0; i < num_readers; ++i) { if (pfds[i].revents & POLLIN) diff --git a/src/cc/perf_reader.h b/src/cc/perf_reader.h index 8effd9b..024c71f 100644 --- a/src/cc/perf_reader.h +++ b/src/cc/perf_reader.h @@ -19,4 +19,4 @@ struct perf_reader; struct perf_reader * perf_reader_new(int fd, int page_cnt, perf_reader_cb cb, void *cb_cookie); void perf_reader_free(void *ptr); int perf_reader_mmap(struct perf_reader *reader, int fd, unsigned long sample_type); -int perf_reader_poll(int num_readers, struct perf_reader **readers); +int perf_reader_poll(int num_readers, struct perf_reader **readers, int timeout); diff --git a/src/python/bcc/__init__.py b/src/python/bcc/__init__.py index ac9922b..001610d 100644 --- a/src/python/bcc/__init__.py +++ b/src/python/bcc/__init__.py @@ -94,7 +94,7 @@ lib.bpf_attach_kprobe.argtypes = [ct.c_int, ct.c_char_p, ct.c_char_p, ct.c_int, lib.bpf_detach_kprobe.restype = ct.c_int lib.bpf_detach_kprobe.argtypes = [ct.c_char_p] lib.perf_reader_poll.restype = ct.c_int -lib.perf_reader_poll.argtypes = [ct.c_int, ct.POINTER(ct.c_void_p)] +lib.perf_reader_poll.argtypes = [ct.c_int, ct.POINTER(ct.c_void_p), ct.c_int] lib.perf_reader_free.restype = None lib.perf_reader_free.argtypes = [ct.c_void_p] @@ -780,7 +780,7 @@ class BPF(object): """ return len(open_kprobes) - def kprobe_poll(self): + def kprobe_poll(self, timeout = -1): """kprobe_poll(self) Poll from the ring buffers for all of the open kprobes, calling the @@ -790,7 +790,7 @@ class BPF(object): for i, v in enumerate(open_kprobes.values()): readers[i] = v try: - lib.perf_reader_poll(len(open_kprobes), readers) + lib.perf_reader_poll(len(open_kprobes), readers, timeout) except KeyboardInterrupt: pass