summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYogesh Tillu <yogesh.tillu@linaro.org>2015-07-15 17:38:34 +0530
committerYogesh Tillu <yogesh.tillu@linaro.org>2015-07-21 13:13:08 +0530
commit324efeb1d30f59780fd062244781ca6dae92026e (patch)
treedbf5d36e3be45ae0f8d024c551edd0b9ec5f4ef6
parent4bc63b967f055f52b9dbeed61ab0e65ac1cb27d6 (diff)
Consideration of offset data member for counter.
For perf_mmap case, IOCTL PERF_EVENT_IOC_RESET to work, we need to consider perf_event_mmap_page.offset data member. This observation got concluded by comparing test code on x86 platform. Signed-off-by: Yogesh Tillu <yogesh.tillu@linaro.org> Reviewed-by: Anders Roxell <anders.roxell@linaro.org>
-rw-r--r--perf_rc_mmap.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/perf_rc_mmap.c b/perf_rc_mmap.c
index 57767be..d8e0856 100644
--- a/perf_rc_mmap.c
+++ b/perf_rc_mmap.c
@@ -90,18 +90,17 @@ static unsigned long mmap_read_self(void *addr)
struct perf_event_mmap_page *pc = addr;
unsigned int seq, idx;
unsigned long count;
- signed long pmc = 0;
do {
count = 0;
seq = pc->lock;
barrier();
idx = pc->index;
+ count = pc->offset;
if (idx)
- pmc = rdpmc(idx - 1);
+ count += rdpmc(idx - 1);
barrier();
} while (pc->lock != seq);
- count = pmc;
return count;
}