Skip to content

Commit

Permalink
perf record: Rename variable to make code clear
Browse files Browse the repository at this point in the history
record__mmap_read() writes data from ring buffer into perf.data.  'head'
is maintained by the kernel, points to the last written record.
'old' is maintained by perf, points to the record read in previous
round. record__mmap_read() saves data from 'old' to 'head' to
perf.data.

The names of these variables are not very intutive. In addition,
when dealing with backward writing ring buffer, the md->prev pointer
should point to 'head' instead of the last byte it got.

Add 'start' and 'end' pointer to make code clear and set md->prev to
'head' instead of the moved 'old' pointer. This patch doesn't change
behavior since:

    buf = &data[old & md->mask];
    size = head - old;
    old += size;     <--- Here, old == head

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1463987628-163563-4-git-send-email-wangnan0@huawei.com
Signed-off-by: He Kuang <hekuang@huawei.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Wang Nan authored and Arnaldo Carvalho de Melo committed May 23, 2016
1 parent 2d11c65 commit 09fa4f4
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions tools/perf/builtin-record.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,18 @@ static int record__mmap_read(struct record *rec, int idx)
struct perf_mmap *md = &rec->evlist->mmap[idx];
u64 head = perf_mmap__read_head(md);
u64 old = md->prev;
u64 end = head, start = old;
unsigned char *data = md->base + page_size;
unsigned long size;
void *buf;
int rc = 0;

if (old == head)
if (start == end)
return 0;

rec->samples++;

size = head - old;
size = end - start;
if (size > (unsigned long)(md->mask) + 1) {
WARN_ONCE(1, "failed to keep up with mmap data. (warn only once)\n");

Expand All @@ -107,27 +108,27 @@ static int record__mmap_read(struct record *rec, int idx)
return 0;
}

if ((old & md->mask) + size != (head & md->mask)) {
buf = &data[old & md->mask];
size = md->mask + 1 - (old & md->mask);
old += size;
if ((start & md->mask) + size != (end & md->mask)) {
buf = &data[start & md->mask];
size = md->mask + 1 - (start & md->mask);
start += size;

if (record__write(rec, buf, size) < 0) {
rc = -1;
goto out;
}
}

buf = &data[old & md->mask];
size = head - old;
old += size;
buf = &data[start & md->mask];
size = end - start;
start += size;

if (record__write(rec, buf, size) < 0) {
rc = -1;
goto out;
}

md->prev = old;
md->prev = head;
perf_evlist__mmap_consume(rec->evlist, idx);
out:
return rc;
Expand Down

0 comments on commit 09fa4f4

Please sign in to comment.