mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
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 <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Corey Ashford <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jean Pihet <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
This commit is contained in:
parent
8239698603
commit
2171a92568
4 changed files with 44 additions and 10 deletions
|
|
@ -36,7 +36,7 @@ int test__fdarray__filter(void)
|
|||
}
|
||||
|
||||
fdarray__init_revents(fda, POLLIN);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP, NULL);
|
||||
if (nr_fds != fda->nr_alloc) {
|
||||
pr_debug("\nfdarray__filter()=%d != %d shouldn't have filtered anything",
|
||||
nr_fds, fda->nr_alloc);
|
||||
|
|
@ -44,7 +44,7 @@ int test__fdarray__filter(void)
|
|||
}
|
||||
|
||||
fdarray__init_revents(fda, POLLHUP);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP, NULL);
|
||||
if (nr_fds != 0) {
|
||||
pr_debug("\nfdarray__filter()=%d != %d, should have filtered all fds",
|
||||
nr_fds, fda->nr_alloc);
|
||||
|
|
@ -57,7 +57,7 @@ int test__fdarray__filter(void)
|
|||
|
||||
pr_debug("\nfiltering all but fda->entries[2]:");
|
||||
fdarray__fprintf_prefix(fda, "before", stderr);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP, NULL);
|
||||
fdarray__fprintf_prefix(fda, " after", stderr);
|
||||
if (nr_fds != 1) {
|
||||
pr_debug("\nfdarray__filter()=%d != 1, should have left just one event", nr_fds);
|
||||
|
|
@ -78,7 +78,7 @@ int test__fdarray__filter(void)
|
|||
|
||||
pr_debug("\nfiltering all but (fda->entries[0], fda->entries[3]):");
|
||||
fdarray__fprintf_prefix(fda, "before", stderr);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP);
|
||||
nr_fds = fdarray__filter(fda, POLLHUP, NULL);
|
||||
fdarray__fprintf_prefix(fda, " after", stderr);
|
||||
if (nr_fds != 2) {
|
||||
pr_debug("\nfdarray__filter()=%d != 2, should have left just two events",
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@ int perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd)
|
|||
|
||||
int perf_evlist__filter_pollfd(struct perf_evlist *evlist, short revents_and_mask)
|
||||
{
|
||||
return fdarray__filter(&evlist->pollfd, revents_and_mask);
|
||||
return fdarray__filter(&evlist->pollfd, revents_and_mask, NULL);
|
||||
}
|
||||
|
||||
int perf_evlist__poll(struct perf_evlist *evlist, int timeout)
|
||||
|
|
|
|||
Loading…
Reference in a new issue