From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Kan Liang <kan.liang@intel.com>, Andi Kleen <ak@linux.intel.com>,
Jin Yao <yao.jin@linux.intel.com>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Wang Nan <wangnan0@huawei.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 07/21] perf mmap: Discard 'prev' in perf_mmap__read()
Date: Tue, 6 Feb 2018 13:53:36 -0300 [thread overview]
Message-ID: <20180206165350.2570-8-acme@kernel.org> (raw)
In-Reply-To: <20180206165350.2570-1-acme@kernel.org>
From: Kan Liang <kan.liang@intel.com>
The 'start' and 'prev' variables are duplicates in perf_mmap__read().
Use 'map->prev' to replace 'start' in perf_mmap__read_*().
Suggested-by: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-7-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/mmap.c | 28 ++++++++++------------------
1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 38fa69dc635e..125bfda9d037 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -22,29 +22,27 @@ size_t perf_mmap__mmap_len(struct perf_mmap *map)
/* When check_messup is true, 'end' must points to a good entry */
static union perf_event *perf_mmap__read(struct perf_mmap *map,
- u64 start, u64 end, u64 *prev)
+ u64 *startp, u64 end)
{
unsigned char *data = map->base + page_size;
union perf_event *event = NULL;
- int diff = end - start;
+ int diff = end - *startp;
if (diff >= (int)sizeof(event->header)) {
size_t size;
- event = (union perf_event *)&data[start & map->mask];
+ event = (union perf_event *)&data[*startp & map->mask];
size = event->header.size;
- if (size < sizeof(event->header) || diff < (int)size) {
- event = NULL;
- goto broken_event;
- }
+ if (size < sizeof(event->header) || diff < (int)size)
+ return NULL;
/*
* Event straddles the mmap boundary -- header should always
* be inside due to u64 alignment of output.
*/
- if ((start & map->mask) + size != ((start + size) & map->mask)) {
- unsigned int offset = start;
+ if ((*startp & map->mask) + size != ((*startp + size) & map->mask)) {
+ unsigned int offset = *startp;
unsigned int len = min(sizeof(*event), size), cpy;
void *dst = map->event_copy;
@@ -59,20 +57,15 @@ static union perf_event *perf_mmap__read(struct perf_mmap *map,
event = (union perf_event *)map->event_copy;
}
- start += size;
+ *startp += size;
}
-broken_event:
- if (prev)
- *prev = start;
-
return event;
}
union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
{
u64 head;
- u64 old = map->prev;
/*
* Check if event was unmapped due to a POLLHUP/POLLERR.
@@ -82,13 +75,12 @@ union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
head = perf_mmap__read_head(map);
- return perf_mmap__read(map, old, head, &map->prev);
+ return perf_mmap__read(map, &map->prev, head);
}
union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
{
u64 head, end;
- u64 start = map->prev;
/*
* Check if event was unmapped due to a POLLHUP/POLLERR.
@@ -118,7 +110,7 @@ union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
else
end = head + map->mask + 1;
- return perf_mmap__read(map, start, end, &map->prev);
+ return perf_mmap__read(map, &map->prev, end);
}
void perf_mmap__read_catchup(struct perf_mmap *map)
--
2.14.3
next prev parent reply other threads:[~2018-02-06 16:53 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-06 16:53 [GIT PULL 00/21] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-02-06 16:53 ` Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 01/21] perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 02/21] perf evlist: Remove stale mmap read for backward Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 03/21] perf mmap: Recalculate size for overwrite mode Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 04/21] perf mmap: Cleanup perf_mmap__push() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 05/21] perf mmap: Introduce perf_mmap__read_init() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 06/21] perf mmap: Add new return value logic for perf_mmap__read_init() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` Arnaldo Carvalho de Melo [this message]
2018-02-06 16:53 ` [PATCH 08/21] perf mmap: Introduce perf_mmap__read_done() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 09/21] perf mmap: Introduce perf_mmap__read_event() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 10/21] perf test: Update mmap read functions for backward-ring-buffer test Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 11/21] perf mmap: Discard legacy interface for mmap read Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 12/21] perf top: Check per-event overwrite term Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 13/21] perf evsel: Expose the perf_missing_features struct Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 14/21] perf top: Add overwrite fall back Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 15/21] perf hists browser: Add parameter to disable lost event warning Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 16/21] perf top: Remove lost events checking Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 17/21] perf top: Switch default mode to overwrite mode Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 18/21] perf top: Check the latency of perf_top__mmap_read() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 19/21] perf tools: Substitute yet another strtoull() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 20/21] perf data: Document missing --force option Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 21/21] perf test: Fix test trace+probe_libc_inet_pton.sh for s390x Arnaldo Carvalho de Melo
2018-02-13 11:59 ` [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1 Ingo Molnar
2018-02-13 11:59 ` Ingo Molnar
2018-02-14 13:41 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180206165350.2570-8-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=kan.liang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=wangnan0@huawei.com \
--cc=yao.jin@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.