diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-09-08 10:24:01 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-09-25 15:46:55 -0400 |
commit | 2171a9256862ec139a042832a9ae737b942ca882 (patch) | |
tree | 6664a28341e22f1aa0f6486b54621033047d05a9 /tools/perf | |
parent | 82396986032915c1572bfb74b224fcc2e4e8ba7c (diff) |
tools lib fd array: Allow associating an integer cookie with each entry
We will use this in perf's evlist class so that it can, at
fdarray__filter() time, to unmap the associated ring buffer.
We may need to have further info associated with each fdarray entry, in
that case we'll make that int array a 'union fdarray_priv' one and put a
pointer there so that users can stash whatever they want there. For now,
an int is enough tho.
v2: Add clarification to the per array entry priv area, as well as make
it a union, which makes usage a bit longer, but if/when we make it
use more space by allowing per entry pointers existing users source
code will not have to be changed, just rebuilt.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jean Pihet <jean.pihet@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: http://lkml.kernel.org/n/tip-0p00bn83quck3fio3kcs9vca@git.kernel.org
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/tests/fdarray.c | 8 | ||||
-rw-r--r-- | tools/perf/util/evlist.c | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/tools/perf/tests/fdarray.c b/tools/perf/tests/fdarray.c index a0fea62ec368..d24b837951d4 100644 --- a/tools/perf/tests/fdarray.c +++ b/tools/perf/tests/fdarray.c | |||
@@ -36,7 +36,7 @@ int test__fdarray__filter(void) | |||
36 | } | 36 | } |
37 | 37 | ||
38 | fdarray__init_revents(fda, POLLIN); | 38 | fdarray__init_revents(fda, POLLIN); |
39 | nr_fds = fdarray__filter(fda, POLLHUP); | 39 | nr_fds = fdarray__filter(fda, POLLHUP, NULL); |
40 | if (nr_fds != fda->nr_alloc) { | 40 | if (nr_fds != fda->nr_alloc) { |
41 | pr_debug("\nfdarray__filter()=%d != %d shouldn't have filtered anything", | 41 | pr_debug("\nfdarray__filter()=%d != %d shouldn't have filtered anything", |
42 | nr_fds, fda->nr_alloc); | 42 | nr_fds, fda->nr_alloc); |
@@ -44,7 +44,7 @@ int test__fdarray__filter(void) | |||
44 | } | 44 | } |
45 | 45 | ||
46 | fdarray__init_revents(fda, POLLHUP); | 46 | fdarray__init_revents(fda, POLLHUP); |
47 | nr_fds = fdarray__filter(fda, POLLHUP); | 47 | nr_fds = fdarray__filter(fda, POLLHUP, NULL); |
48 | if (nr_fds != 0) { | 48 | if (nr_fds != 0) { |
49 | pr_debug("\nfdarray__filter()=%d != %d, should have filtered all fds", | 49 | pr_debug("\nfdarray__filter()=%d != %d, should have filtered all fds", |
50 | nr_fds, fda->nr_alloc); | 50 | nr_fds, fda->nr_alloc); |
@@ -57,7 +57,7 @@ int test__fdarray__filter(void) | |||
57 | 57 | ||
58 | pr_debug("\nfiltering all but fda->entries[2]:"); | 58 | pr_debug("\nfiltering all but fda->entries[2]:"); |
59 | fdarray__fprintf_prefix(fda, "before", stderr); | 59 | fdarray__fprintf_prefix(fda, "before", stderr); |
60 | nr_fds = fdarray__filter(fda, POLLHUP); | 60 | nr_fds = fdarray__filter(fda, POLLHUP, NULL); |
61 | fdarray__fprintf_prefix(fda, " after", stderr); | 61 | fdarray__fprintf_prefix(fda, " after", stderr); |
62 | if (nr_fds != 1) { | 62 | if (nr_fds != 1) { |
63 | pr_debug("\nfdarray__filter()=%d != 1, should have left just one event", nr_fds); | 63 | pr_debug("\nfdarray__filter()=%d != 1, should have left just one event", nr_fds); |
@@ -78,7 +78,7 @@ int test__fdarray__filter(void) | |||
78 | 78 | ||
79 | pr_debug("\nfiltering all but (fda->entries[0], fda->entries[3]):"); | 79 | pr_debug("\nfiltering all but (fda->entries[0], fda->entries[3]):"); |
80 | fdarray__fprintf_prefix(fda, "before", stderr); | 80 | fdarray__fprintf_prefix(fda, "before", stderr); |
81 | nr_fds = fdarray__filter(fda, POLLHUP); | 81 | nr_fds = fdarray__filter(fda, POLLHUP, NULL); |
82 | fdarray__fprintf_prefix(fda, " after", stderr); | 82 | fdarray__fprintf_prefix(fda, " after", stderr); |
83 | if (nr_fds != 2) { | 83 | if (nr_fds != 2) { |
84 | pr_debug("\nfdarray__filter()=%d != 2, should have left just two events", | 84 | pr_debug("\nfdarray__filter()=%d != 2, should have left just two events", |
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index efddee5a23e9..61d18dc83e8e 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -435,7 +435,7 @@ int perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd) | |||
435 | 435 | ||
436 | int perf_evlist__filter_pollfd(struct perf_evlist *evlist, short revents_and_mask) | 436 | int perf_evlist__filter_pollfd(struct perf_evlist *evlist, short revents_and_mask) |
437 | { | 437 | { |
438 | return fdarray__filter(&evlist->pollfd, revents_and_mask); | 438 | return fdarray__filter(&evlist->pollfd, revents_and_mask, NULL); |
439 | } | 439 | } |
440 | 440 | ||
441 | int perf_evlist__poll(struct perf_evlist *evlist, int timeout) | 441 | int perf_evlist__poll(struct perf_evlist *evlist, int timeout) |