| .. | .. |
|---|
| 8 | 8 | #include <unistd.h> |
|---|
| 9 | 9 | #include <api/fs/fs.h> |
|---|
| 10 | 10 | #include <linux/kernel.h> |
|---|
| 11 | +#include "map_symbol.h" |
|---|
| 11 | 12 | #include "mem-events.h" |
|---|
| 12 | 13 | #include "debug.h" |
|---|
| 13 | 14 | #include "symbol.h" |
|---|
| 14 | | -#include "sort.h" |
|---|
| 15 | 15 | |
|---|
| 16 | 16 | unsigned int perf_mem_events__loads_ldlat = 30; |
|---|
| 17 | 17 | |
|---|
| .. | .. |
|---|
| 28 | 28 | static char mem_loads_name[100]; |
|---|
| 29 | 29 | static bool mem_loads_name__init; |
|---|
| 30 | 30 | |
|---|
| 31 | | -char *perf_mem_events__name(int i) |
|---|
| 31 | +char * __weak perf_mem_events__name(int i) |
|---|
| 32 | 32 | { |
|---|
| 33 | 33 | if (i == PERF_MEM_EVENTS__LOAD) { |
|---|
| 34 | 34 | if (!mem_loads_name__init) { |
|---|
| .. | .. |
|---|
| 101 | 101 | } |
|---|
| 102 | 102 | |
|---|
| 103 | 103 | return found ? 0 : -ENOENT; |
|---|
| 104 | +} |
|---|
| 105 | + |
|---|
| 106 | +void perf_mem_events__list(void) |
|---|
| 107 | +{ |
|---|
| 108 | + int j; |
|---|
| 109 | + |
|---|
| 110 | + for (j = 0; j < PERF_MEM_EVENTS__MAX; j++) { |
|---|
| 111 | + struct perf_mem_event *e = &perf_mem_events[j]; |
|---|
| 112 | + |
|---|
| 113 | + fprintf(stderr, "%-13s%-*s%s\n", |
|---|
| 114 | + e->tag, |
|---|
| 115 | + verbose > 0 ? 25 : 0, |
|---|
| 116 | + verbose > 0 ? perf_mem_events__name(j) : "", |
|---|
| 117 | + e->supported ? ": available" : ""); |
|---|
| 118 | + } |
|---|
| 104 | 119 | } |
|---|
| 105 | 120 | |
|---|
| 106 | 121 | static const char * const tlb_access[] = { |
|---|
| .. | .. |
|---|
| 410 | 425 | return -1; |
|---|
| 411 | 426 | } |
|---|
| 412 | 427 | |
|---|
| 413 | | - if (!mi->daddr.map || !mi->iaddr.map) { |
|---|
| 428 | + if (!mi->daddr.ms.map || !mi->iaddr.ms.map) { |
|---|
| 414 | 429 | stats->nomap++; |
|---|
| 415 | 430 | return -1; |
|---|
| 416 | 431 | } |
|---|