perf tools: Update mmap2 interface with protection and flag bits
The kernel piece passes more info now. Update the perf tool to reflect that and adjust the synthesized maps to play along. Signed-off-by: Don Zickus <dzickus@redhat.com> Link: http://lkml.kernel.org/r/1400526833-141779-4-git-send-email-dzickus@redhat.com Signed-off-by: Jiri Olsa <jolsa@kernel.org>
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
#include <linux/types.h>
|
||||
#include <sys/mman.h>
|
||||
#include "event.h"
|
||||
#include "debug.h"
|
||||
#include "hist.h"
|
||||
@ -212,6 +213,21 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
|
||||
else
|
||||
event->header.misc = PERF_RECORD_MISC_GUEST_USER;
|
||||
|
||||
/* map protection and flags bits */
|
||||
event->mmap2.prot = 0;
|
||||
event->mmap2.flags = 0;
|
||||
if (prot[0] == 'r')
|
||||
event->mmap2.prot |= PROT_READ;
|
||||
if (prot[1] == 'w')
|
||||
event->mmap2.prot |= PROT_WRITE;
|
||||
if (prot[2] == 'x')
|
||||
event->mmap2.prot |= PROT_EXEC;
|
||||
|
||||
if (prot[3] == 's')
|
||||
event->mmap2.flags |= MAP_SHARED;
|
||||
else
|
||||
event->mmap2.flags |= MAP_PRIVATE;
|
||||
|
||||
if (prot[2] != 'x') {
|
||||
if (!mmap_data || prot[0] != 'r')
|
||||
continue;
|
||||
@ -612,12 +628,15 @@ size_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp)
|
||||
size_t perf_event__fprintf_mmap2(union perf_event *event, FILE *fp)
|
||||
{
|
||||
return fprintf(fp, " %d/%d: [%#" PRIx64 "(%#" PRIx64 ") @ %#" PRIx64
|
||||
" %02x:%02x %"PRIu64" %"PRIu64"]: %c %s\n",
|
||||
" %02x:%02x %"PRIu64" %"PRIu64"]: %c%c%c%c %s\n",
|
||||
event->mmap2.pid, event->mmap2.tid, event->mmap2.start,
|
||||
event->mmap2.len, event->mmap2.pgoff, event->mmap2.maj,
|
||||
event->mmap2.min, event->mmap2.ino,
|
||||
event->mmap2.ino_generation,
|
||||
(event->header.misc & PERF_RECORD_MISC_MMAP_DATA) ? 'r' : 'x',
|
||||
(event->mmap2.prot & PROT_READ) ? 'r' : '-',
|
||||
(event->mmap2.prot & PROT_WRITE) ? 'w' : '-',
|
||||
(event->mmap2.prot & PROT_EXEC) ? 'x' : '-',
|
||||
(event->mmap2.flags & MAP_SHARED) ? 's' : 'p',
|
||||
event->mmap2.filename);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user