[RFC 00/10] perf pollfd series v2

From: Arnaldo Carvalho de Melo
Date: Wed Sep 03 2014 - 18:00:25 EST


This is an alternative series to the one Jiri Olsa posted to use the
fixes he made to the kernel side to allow tooling to notice that a thread had
exited by looking at the pollfd.revents looking for POLLHUP notifications.

Once all event file descriptors are removed from the evlist pollfd array,
tools can make a decision about exiting or telling the user about what happened,
asking to guidance on what to do next.

The main difference in this approach is that a new class, which Jiri
called 'poller' and I called 'fdarray', grew up from what was in evlist->pollfd
and associated operations, while Jiri first introduced a new class and then
made tooling use it.

The details of the implementation should be clear on the changelog
comments, please let me know if you see any problems, and if I can have your
acked-by/tested-by/whatever-else tags to get this moving forward.

Ah, there is still one missing thing which is to make the hists browser
in live mode be notified that all monitored events are POLLHUP'ed, will get
to that in followup patches.

The kernel bits were sent together with my latest pull req to Ingo,
this series is on top of that branch and is available at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git perf/fdarray


v2: The kernel bits were already merged by Ingo, this is should address the
comments made for the first RFC, and has a hopefully improved/clearer
fdarray__filter() method, with changes made from thinking about comments made
by Adrian.

I made fdarray__init() receive the fdarray__add() autogrow hint, as suggested
by Namhyung.

It also makes fdarray__add() receive the revents mask instead of using what
makes sense to perf_evlist__add_pollfd(), also suggested by Namhyung.

I renamed the fd/poll.[ch] files to fd/array.[ch], from the discussion had
about naming with Jiri.

I added some Acked-by and Reviewed-by tags, please let me know if i should
stick some more, I really appreciate those tags!

Ah, in this branch there are some more patches, as it was made on top of my
perf/core branch, below are the stats for just the changesets related to this


- Arnaldo

Arnaldo Carvalho de Melo (10):
perf evlist: Introduce perf_evlist__filter_pollfd method
perf tests: Add test for perf_evlist__filter_pollfd()
perf evlist: Monitor POLLERR and POLLHUP events too
perf record: Filter out POLLHUP'ed file descriptors
perf trace: Filter out POLLHUP'ed file descriptors
perf evlist: Allow growing pollfd on add method
perf tests: Add pollfd growing test
perf kvm stat live: Use perf_evlist__add_pollfd() instead of local
perf evlist: Introduce poll method for common code idiom
tools lib api: Adopt fdarray class from perf's evlist

tools/lib/api/Makefile | 7 +-
tools/lib/api/fd/array.c | 108 +++++++++++++++
tools/lib/api/fd/array.h | 32 +++++
tools/perf/Makefile.perf | 1 +
tools/perf/builtin-kvm.c | 24 ++--
tools/perf/builtin-record.c | 5 +-
tools/perf/builtin-top.c | 4 +-
tools/perf/builtin-trace.c | 3 +-
tools/perf/tests/builtin-test.c | 8 ++
tools/perf/tests/evlist.c | 217 ++++++++++++++++++++++++++++++
tools/perf/tests/open-syscall-tp-fields.c | 2 +-
tools/perf/tests/perf-record.c | 2 +-
tools/perf/tests/task-exit.c | 2 +-
tools/perf/tests/tests.h | 2 +
tools/perf/util/evlist.c | 37 +++--
tools/perf/util/evlist.h | 10 +-
tools/perf/util/python.c | 6 +-
17 files changed, 431 insertions(+), 39 deletions(-)
create mode 100644 tools/lib/api/fd/array.c
create mode 100644 tools/lib/api/fd/array.h
create mode 100644 tools/perf/tests/evlist.c

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/