Skip to contentSkip to conversation

perf symbols: Fill in pgoff in mmap synthesized events

PATCH In review Anton Blanchard 2 participants 3 messages Apr 3, 2010 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 perf symbols: Fill in pgoff in mmap synthesized events

When we synthesize mmap events we need to fill in the pgoff field.

---

I wasn't able to test this completely since I couldn't find an executable region with a non 0 offset. We will see it when we start doing data profiling.

tools/perf/util/event.c +9 -0
Index: linux.trees.git/tools/perf/util/event.c
===================================================================
@@ -130,6 +130,7 @@ static int event__synthesize_mmap_events
 			continue;
 		pbf += n + 3;
 		if (*pbf == 'x') { /* vm_exec */
+			u64 vm_pgoff;
 			char *execname = strchr(bf, '/');
 
 			/* Catch VDSO */
@@ -139,6 +140,14 @@ static int event__synthesize_mmap_events
 			if (execname == NULL)
 				continue;
 
+			pbf += 3;
+			n = hex2u64(pbf, &vm_pgoff);
+			/* pgoff is in bytes, not pages */
+			if (n >= 0)
+				ev.mmap.pgoff = vm_pgoff << getpagesize();
+			else
+				ev.mmap.pgoff = 0;
+
 			size = strlen(execname);
 			execname[size - 1] = '\0'; /* Remove \n */
 			memcpy(ev.mmap.filename, execname, size);
#1 lore raw

Em Sat, Apr 03, 2010 at 10:53:31PM +1100, Anton Blanchard escreveu:

Quoted 4 lines

When we synthesize mmap events we need to fill in the pgoff field.

Thanks Anton,

Ingo, I added this one to my perf branch after fixing that
branch due to a problem with the removal of tools/perf/util/string.h.

- Arnaldo

#2 lore raw
In reply to Anton Blanchard
Commit-ID:  4af8b35db6634dd1e0d616de689582b6c93550af
Gitweb:     http://git.kernel.org/tip/4af8b35db6634dd1e0d616de689582b6c93550af
Author:     Anton Blanchard <[email protected]>
AuthorDate: Sat, 3 Apr 2010 22:53:31 +1100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Sat, 3 Apr 2010 10:20:31 -0300

perf symbols: Fill in pgoff in mmap synthesized events

When we synthesize mmap events we need to fill in the pgoff field.

I wasn't able to test this completely since I couldn't find an executable region with a non 0 offset. We will see it when we start doing data profiling.

Cc David Miller <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Paul Mackerras <[email protected]>

LKML-Reference: <20100403115331.GK5594@kryten>

---
 tools/perf/util/event.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
tools/perf/util/event.c +9 -0
index 052eaec..571fb25 100644
@@ -130,6 +130,7 @@ static int event__synthesize_mmap_events(pid_t pid, pid_t tgid,
 			continue;
 		pbf += n + 3;
 		if (*pbf == 'x') { /* vm_exec */
+			u64 vm_pgoff;
 			char *execname = strchr(bf, '/');
 
 			/* Catch VDSO */
@@ -139,6 +140,14 @@ static int event__synthesize_mmap_events(pid_t pid, pid_t tgid,
 			if (execname == NULL)
 				continue;
 
+			pbf += 3;
+			n = hex2u64(pbf, &vm_pgoff);
+			/* pgoff is in bytes, not pages */
+			if (n >= 0)
+				ev.mmap.pgoff = vm_pgoff << getpagesize();
+			else
+				ev.mmap.pgoff = 0;
+
 			size = strlen(execname);
 			execname[size - 1] = '\0'; /* Remove \n */
 			memcpy(ev.mmap.filename, execname, size);