bpftool: Add perf event names
Add new functions and macros to get perf event names. These names except the perf_type_name are all copied from tool/perf/util/{parse-events,evsel}.c, so that in the future we will have a good chance to use the same code. Suggested-by: Jiri Olsa <olsajiri@gmail.com> Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Reviewed-by: Quentin Monnet <quentin@isovalent.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/r/20230709025630.3735-10-laoar.shao@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
1b715e1b0e
commit
62b57e3ddd
@ -5,6 +5,7 @@
|
||||
#include <linux/err.h>
|
||||
#include <linux/netfilter.h>
|
||||
#include <linux/netfilter_arp.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include <net/if.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
@ -19,6 +20,72 @@
|
||||
static struct hashmap *link_table;
|
||||
static struct dump_data dd;
|
||||
|
||||
static const char *perf_type_name[PERF_TYPE_MAX] = {
|
||||
[PERF_TYPE_HARDWARE] = "hardware",
|
||||
[PERF_TYPE_SOFTWARE] = "software",
|
||||
[PERF_TYPE_TRACEPOINT] = "tracepoint",
|
||||
[PERF_TYPE_HW_CACHE] = "hw-cache",
|
||||
[PERF_TYPE_RAW] = "raw",
|
||||
[PERF_TYPE_BREAKPOINT] = "breakpoint",
|
||||
};
|
||||
|
||||
const char *event_symbols_hw[PERF_COUNT_HW_MAX] = {
|
||||
[PERF_COUNT_HW_CPU_CYCLES] = "cpu-cycles",
|
||||
[PERF_COUNT_HW_INSTRUCTIONS] = "instructions",
|
||||
[PERF_COUNT_HW_CACHE_REFERENCES] = "cache-references",
|
||||
[PERF_COUNT_HW_CACHE_MISSES] = "cache-misses",
|
||||
[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = "branch-instructions",
|
||||
[PERF_COUNT_HW_BRANCH_MISSES] = "branch-misses",
|
||||
[PERF_COUNT_HW_BUS_CYCLES] = "bus-cycles",
|
||||
[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = "stalled-cycles-frontend",
|
||||
[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = "stalled-cycles-backend",
|
||||
[PERF_COUNT_HW_REF_CPU_CYCLES] = "ref-cycles",
|
||||
};
|
||||
|
||||
const char *event_symbols_sw[PERF_COUNT_SW_MAX] = {
|
||||
[PERF_COUNT_SW_CPU_CLOCK] = "cpu-clock",
|
||||
[PERF_COUNT_SW_TASK_CLOCK] = "task-clock",
|
||||
[PERF_COUNT_SW_PAGE_FAULTS] = "page-faults",
|
||||
[PERF_COUNT_SW_CONTEXT_SWITCHES] = "context-switches",
|
||||
[PERF_COUNT_SW_CPU_MIGRATIONS] = "cpu-migrations",
|
||||
[PERF_COUNT_SW_PAGE_FAULTS_MIN] = "minor-faults",
|
||||
[PERF_COUNT_SW_PAGE_FAULTS_MAJ] = "major-faults",
|
||||
[PERF_COUNT_SW_ALIGNMENT_FAULTS] = "alignment-faults",
|
||||
[PERF_COUNT_SW_EMULATION_FAULTS] = "emulation-faults",
|
||||
[PERF_COUNT_SW_DUMMY] = "dummy",
|
||||
[PERF_COUNT_SW_BPF_OUTPUT] = "bpf-output",
|
||||
[PERF_COUNT_SW_CGROUP_SWITCHES] = "cgroup-switches",
|
||||
};
|
||||
|
||||
const char *evsel__hw_cache[PERF_COUNT_HW_CACHE_MAX] = {
|
||||
[PERF_COUNT_HW_CACHE_L1D] = "L1-dcache",
|
||||
[PERF_COUNT_HW_CACHE_L1I] = "L1-icache",
|
||||
[PERF_COUNT_HW_CACHE_LL] = "LLC",
|
||||
[PERF_COUNT_HW_CACHE_DTLB] = "dTLB",
|
||||
[PERF_COUNT_HW_CACHE_ITLB] = "iTLB",
|
||||
[PERF_COUNT_HW_CACHE_BPU] = "branch",
|
||||
[PERF_COUNT_HW_CACHE_NODE] = "node",
|
||||
};
|
||||
|
||||
const char *evsel__hw_cache_op[PERF_COUNT_HW_CACHE_OP_MAX] = {
|
||||
[PERF_COUNT_HW_CACHE_OP_READ] = "load",
|
||||
[PERF_COUNT_HW_CACHE_OP_WRITE] = "store",
|
||||
[PERF_COUNT_HW_CACHE_OP_PREFETCH] = "prefetch",
|
||||
};
|
||||
|
||||
const char *evsel__hw_cache_result[PERF_COUNT_HW_CACHE_RESULT_MAX] = {
|
||||
[PERF_COUNT_HW_CACHE_RESULT_ACCESS] = "refs",
|
||||
[PERF_COUNT_HW_CACHE_RESULT_MISS] = "misses",
|
||||
};
|
||||
|
||||
#define perf_event_name(array, id) ({ \
|
||||
const char *event_str = NULL; \
|
||||
\
|
||||
if ((id) >= 0 && (id) < ARRAY_SIZE(array)) \
|
||||
event_str = array[id]; \
|
||||
event_str; \
|
||||
})
|
||||
|
||||
static int link_parse_fd(int *argc, char ***argv)
|
||||
{
|
||||
int fd;
|
||||
|
Loading…
Reference in New Issue
Block a user