diff options
Diffstat (limited to 'tools/perf/util/event.c')
| -rw-r--r-- | tools/perf/util/event.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 9b393e7dca6f..49096ea58a15 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
| @@ -187,7 +187,7 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool, | |||
| 187 | return -1; | 187 | return -1; |
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | event->header.type = PERF_RECORD_MMAP2; | 190 | event->header.type = PERF_RECORD_MMAP; |
| 191 | /* | 191 | /* |
| 192 | * Just like the kernel, see __perf_event_mmap in kernel/perf_event.c | 192 | * Just like the kernel, see __perf_event_mmap in kernel/perf_event.c |
| 193 | */ | 193 | */ |
| @@ -198,7 +198,6 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool, | |||
| 198 | char prot[5]; | 198 | char prot[5]; |
| 199 | char execname[PATH_MAX]; | 199 | char execname[PATH_MAX]; |
| 200 | char anonstr[] = "//anon"; | 200 | char anonstr[] = "//anon"; |
| 201 | unsigned int ino; | ||
| 202 | size_t size; | 201 | size_t size; |
| 203 | ssize_t n; | 202 | ssize_t n; |
| 204 | 203 | ||
| @@ -209,15 +208,12 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool, | |||
| 209 | strcpy(execname, ""); | 208 | strcpy(execname, ""); |
| 210 | 209 | ||
| 211 | /* 00400000-0040c000 r-xp 00000000 fd:01 41038 /bin/cat */ | 210 | /* 00400000-0040c000 r-xp 00000000 fd:01 41038 /bin/cat */ |
| 212 | n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %x:%x %u %s\n", | 211 | n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %*x:%*x %*u %s\n", |
| 213 | &event->mmap2.start, &event->mmap2.len, prot, | 212 | &event->mmap.start, &event->mmap.len, prot, |
| 214 | &event->mmap2.pgoff, &event->mmap2.maj, | 213 | &event->mmap.pgoff, |
| 215 | &event->mmap2.min, | 214 | execname); |
| 216 | &ino, execname); | ||
| 217 | |||
| 218 | event->mmap2.ino = (u64)ino; | ||
| 219 | 215 | ||
| 220 | if (n != 8) | 216 | if (n != 5) |
| 221 | continue; | 217 | continue; |
| 222 | 218 | ||
| 223 | if (prot[2] != 'x') | 219 | if (prot[2] != 'x') |
| @@ -227,15 +223,15 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool, | |||
| 227 | strcpy(execname, anonstr); | 223 | strcpy(execname, anonstr); |
| 228 | 224 | ||
| 229 | size = strlen(execname) + 1; | 225 | size = strlen(execname) + 1; |
| 230 | memcpy(event->mmap2.filename, execname, size); | 226 | memcpy(event->mmap.filename, execname, size); |
| 231 | size = PERF_ALIGN(size, sizeof(u64)); | 227 | size = PERF_ALIGN(size, sizeof(u64)); |
| 232 | event->mmap2.len -= event->mmap.start; | 228 | event->mmap.len -= event->mmap.start; |
| 233 | event->mmap2.header.size = (sizeof(event->mmap2) - | 229 | event->mmap.header.size = (sizeof(event->mmap) - |
| 234 | (sizeof(event->mmap2.filename) - size)); | 230 | (sizeof(event->mmap.filename) - size)); |
| 235 | memset(event->mmap2.filename + size, 0, machine->id_hdr_size); | 231 | memset(event->mmap.filename + size, 0, machine->id_hdr_size); |
| 236 | event->mmap2.header.size += machine->id_hdr_size; | 232 | event->mmap.header.size += machine->id_hdr_size; |
| 237 | event->mmap2.pid = tgid; | 233 | event->mmap.pid = tgid; |
| 238 | event->mmap2.tid = pid; | 234 | event->mmap.tid = pid; |
| 239 | 235 | ||
| 240 | if (process(tool, event, &synth_sample, machine) != 0) { | 236 | if (process(tool, event, &synth_sample, machine) != 0) { |
| 241 | rc = -1; | 237 | rc = -1; |
