lkml.org 
[lkml]   [2019]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 67/69] libperf: Adopt perf_evlist__filter_pollfd() from tools/perf
    Date
    From: Jiri Olsa <jolsa@kernel.org>

    Introduce the perf_evlist__filter_pollfd function and export it in the
    perf/evlist.h header, so that libperf users can check if the descriptor
    is still alive.

    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20191007125344.14268-27-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/lib/evlist.c | 15 +++++++++++++++
    tools/perf/lib/include/perf/evlist.h | 2 ++
    tools/perf/lib/libperf.map | 1 +
    tools/perf/util/evlist.c | 12 +-----------
    4 files changed, 19 insertions(+), 11 deletions(-)

    diff --git a/tools/perf/lib/evlist.c b/tools/perf/lib/evlist.c
    index 9534ad9a572f..65045614c938 100644
    --- a/tools/perf/lib/evlist.c
    +++ b/tools/perf/lib/evlist.c
    @@ -313,6 +313,21 @@ int perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd,
    return pos;
    }

    +static void perf_evlist__munmap_filtered(struct fdarray *fda, int fd,
    + void *arg __maybe_unused)
    +{
    + struct perf_mmap *map = fda->priv[fd].ptr;
    +
    + if (map)
    + perf_mmap__put(map);
    +}
    +
    +int perf_evlist__filter_pollfd(struct perf_evlist *evlist, short revents_and_mask)
    +{
    + return fdarray__filter(&evlist->pollfd, revents_and_mask,
    + perf_evlist__munmap_filtered, NULL);
    +}
    +
    int perf_evlist__poll(struct perf_evlist *evlist, int timeout)
    {
    return fdarray__poll(&evlist->pollfd, timeout);
    diff --git a/tools/perf/lib/include/perf/evlist.h b/tools/perf/lib/include/perf/evlist.h
    index 28b6a12a8a2b..16f526e74d13 100644
    --- a/tools/perf/lib/include/perf/evlist.h
    +++ b/tools/perf/lib/include/perf/evlist.h
    @@ -32,6 +32,8 @@ LIBPERF_API void perf_evlist__set_maps(struct perf_evlist *evlist,
    struct perf_cpu_map *cpus,
    struct perf_thread_map *threads);
    LIBPERF_API int perf_evlist__poll(struct perf_evlist *evlist, int timeout);
    +LIBPERF_API int perf_evlist__filter_pollfd(struct perf_evlist *evlist,
    + short revents_and_mask);

    LIBPERF_API int perf_evlist__mmap(struct perf_evlist *evlist, int pages);
    LIBPERF_API void perf_evlist__munmap(struct perf_evlist *evlist);
    diff --git a/tools/perf/lib/libperf.map b/tools/perf/lib/libperf.map
    index 5a18fd1aacf2..2184aba36c3f 100644
    --- a/tools/perf/lib/libperf.map
    +++ b/tools/perf/lib/libperf.map
    @@ -42,6 +42,7 @@ LIBPERF_0.0.1 {
    perf_evlist__poll;
    perf_evlist__mmap;
    perf_evlist__munmap;
    + perf_evlist__filter_pollfd;
    perf_mmap__consume;
    perf_mmap__read_init;
    perf_mmap__read_done;
    diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
    index 031ace3696a2..21b77efa802c 100644
    --- a/tools/perf/util/evlist.c
    +++ b/tools/perf/util/evlist.c
    @@ -423,19 +423,9 @@ int evlist__add_pollfd(struct evlist *evlist, int fd)
    return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN);
    }

    -static void perf_evlist__munmap_filtered(struct fdarray *fda, int fd,
    - void *arg __maybe_unused)
    -{
    - struct perf_mmap *map = fda->priv[fd].ptr;
    -
    - if (map)
    - perf_mmap__put(map);
    -}
    -
    int evlist__filter_pollfd(struct evlist *evlist, short revents_and_mask)
    {
    - return fdarray__filter(&evlist->core.pollfd, revents_and_mask,
    - perf_evlist__munmap_filtered, NULL);
    + return perf_evlist__filter_pollfd(&evlist->core, revents_and_mask);
    }

    int evlist__poll(struct evlist *evlist, int timeout)
    --
    2.21.0
    \
     
     \ /
      Last update: 2019-10-11 22:12    [W:4.087 / U:0.540 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site