lkml.org 
[lkml]   [2018]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V2 1/8] perf evlist: Store 'overwrite' in struct perf_mmap
    Date
    From: Kan Liang <kan.liang@linux.intel.com>

    It has been determined that the map is for overwrite mode
    (evlist->overwrite_mmap) or non-overwrite mode (evlist->mmap) when
    calling perf_evlist__alloc_mmap().
    Store the information in struct perf_mmap, which will be used later to
    simpler the perf_mmap__read*() interfaces.

    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    ---

    Changes since V1:
    - New patch to store 'overwrite' in struct perf_mmap at allocation

    tools/perf/util/evlist.c | 8 +++++---
    tools/perf/util/mmap.h | 1 +
    2 files changed, 6 insertions(+), 3 deletions(-)

    diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
    index 41a4666..a59281d 100644
    --- a/tools/perf/util/evlist.c
    +++ b/tools/perf/util/evlist.c
    @@ -722,7 +722,8 @@ void perf_evlist__munmap(struct perf_evlist *evlist)
    zfree(&evlist->overwrite_mmap);
    }

    -static struct perf_mmap *perf_evlist__alloc_mmap(struct perf_evlist *evlist)
    +static struct perf_mmap *perf_evlist__alloc_mmap(struct perf_evlist *evlist,
    + bool overwrite)
    {
    int i;
    struct perf_mmap *map;
    @@ -736,6 +737,7 @@ static struct perf_mmap *perf_evlist__alloc_mmap(struct perf_evlist *evlist)

    for (i = 0; i < evlist->nr_mmaps; i++) {
    map[i].fd = -1;
    + map[i].overwrite = overwrite;
    /*
    * When the perf_mmap() call is made we grab one refcount, plus
    * one extra to let perf_mmap__consume() get the last
    @@ -779,7 +781,7 @@ static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx,
    maps = evlist->overwrite_mmap;

    if (!maps) {
    - maps = perf_evlist__alloc_mmap(evlist);
    + maps = perf_evlist__alloc_mmap(evlist, true);
    if (!maps)
    return -1;
    evlist->overwrite_mmap = maps;
    @@ -1029,7 +1031,7 @@ int perf_evlist__mmap_ex(struct perf_evlist *evlist, unsigned int pages,
    struct mmap_params mp;

    if (!evlist->mmap)
    - evlist->mmap = perf_evlist__alloc_mmap(evlist);
    + evlist->mmap = perf_evlist__alloc_mmap(evlist, false);
    if (!evlist->mmap)
    return -ENOMEM;

    diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h
    index ec7d3a24..7113797 100644
    --- a/tools/perf/util/mmap.h
    +++ b/tools/perf/util/mmap.h
    @@ -20,6 +20,7 @@ struct perf_mmap {
    int fd;
    refcount_t refcnt;
    u64 prev;
    + bool overwrite;
    struct auxtrace_mmap auxtrace_mmap;
    char event_copy[PERF_SAMPLE_MAX_SIZE] __aligned(8);
    };
    --
    2.4.11
    \
     
     \ /
      Last update: 2018-03-06 16:38    [W:2.996 / U:0.904 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site