Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1387098 > unrolled thread

[PATCH 3/5] perf tools: Rename variable in __perf_evlist__mmap_read()

Started byWang Nan <wangnan0@huawei.com>
First post2016-04-26 04:40 +0200
Last post2016-04-26 04:40 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 3/5] perf tools: Rename variable in __perf_evlist__mmap_read() Wang Nan <wangnan0@huawei.com> - 2016-04-26 04:40 +0200

#1387098 — [PATCH 3/5] perf tools: Rename variable in __perf_evlist__mmap_read()

FromWang Nan <wangnan0@huawei.com>
Date2016-04-26 04:40 +0200
Subject[PATCH 3/5] perf tools: Rename variable in __perf_evlist__mmap_read()
Message-ID<rs14S-8ie-19@gated-at.bofh.it>
In __perf_evlist__mmap_read(), give better names to pointers. Origianl
name 'old' and 'head' directly related to pointers in ring buffer
control page. For backward ring buffer, the meaning of 'head' point
is not 'the first byte of free space', but 'the first byte of the last
record'. To reduce confusion, rename 'old' to 'start', 'head' to 'end'.
'start' -> 'end' is the records should be read from.

Change parameter order.

Change 'overwrite' to 'check_messup'. When reading from 'head', no
need to check messup for for backward ring buffer.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
---
 tools/perf/util/evlist.c | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 3ee94b2..f680983 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -679,30 +679,31 @@ static struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist,
 	return NULL;
 }
 
+/* When check_messup is true, 'end' must points to a known good entry */
 static union perf_event *
-__perf_evlist__mmap_read(struct perf_mmap *md, bool overwrite, u64 head,
-			 u64 old, u64 *prev)
+__perf_evlist__mmap_read(struct perf_mmap *md, bool check_messup, u64 start,
+			 u64 end, u64 *prev)
 {
 	unsigned char *data = md->base + page_size;
 	union perf_event *event = NULL;
-	int diff = head - old;
+	int diff = end - start;
 
-	if (overwrite) {
+	if (check_messup) {
 		/*
 		 * If we're further behind than half the buffer, there's a chance
 		 * the writer will bite our tail and mess up the samples under us.
 		 *
-		 * If we somehow ended up ahead of the head, we got messed up.
+		 * If we somehow ended up ahead of the 'end', we got messed up.
 		 *
-		 * In either case, truncate and restart at head.
+		 * In either case, truncate and restart at 'end'.
 		 */
 		if (diff > md->mask / 2 || diff < 0) {
 			fprintf(stderr, "WARNING: failed to keep up with mmap data.\n");
 
 			/*
-			 * head points to a known good entry, start there.
+			 * 'end' points to a known good entry, start there.
 			 */
-			old = head;
+			start = end;
 			diff = 0;
 		}
 	}
@@ -710,7 +711,7 @@ __perf_evlist__mmap_read(struct perf_mmap *md, bool overwrite, u64 head,
 	if (diff >= (int)sizeof(event->header)) {
 		size_t size;
 
-		event = (union perf_event *)&data[old & md->mask];
+		event = (union perf_event *)&data[start & md->mask];
 		size = event->header.size;
 
 		if (size < sizeof(event->header) || diff < (int)size) {
@@ -722,8 +723,8 @@ __perf_evlist__mmap_read(struct perf_mmap *md, bool overwrite, u64 head,
 		 * Event straddles the mmap boundary -- header should always
 		 * be inside due to u64 alignment of output.
 		 */
-		if ((old & md->mask) + size != ((old + size) & md->mask)) {
-			unsigned int offset = old;
+		if ((start & md->mask) + size != ((start + size) & md->mask)) {
+			unsigned int offset = start;
 			unsigned int len = min(sizeof(*event), size), cpy;
 			void *dst = md->event_copy;
 
@@ -738,12 +739,12 @@ __perf_evlist__mmap_read(struct perf_mmap *md, bool overwrite, u64 head,
 			event = (union perf_event *) md->event_copy;
 		}
 
-		old += size;
+		start += size;
 	}
 
 broken_event:
 	if (prev)
-		*prev = old;
+		*prev = start;
 
 	return event;
 }
@@ -762,8 +763,8 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx)
 
 	head = perf_mmap__read_head(md);
 
-	return __perf_evlist__mmap_read(md, evlist->overwrite, head,
-					old, &md->prev);
+	return __perf_evlist__mmap_read(md, evlist->overwrite, old,
+					head, &md->prev);
 }
 
 static bool perf_mmap__empty(struct perf_mmap *md)
-- 
1.8.3.4

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web