tools/bpf: add ksym_get_addr() in trace_helpers
authorYonghong Song <yhs@fb.com>
Thu, 24 May 2018 18:21:11 +0000 (11:21 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 25 May 2018 01:18:20 +0000 (18:18 -0700)
Given a kernel function name, ksym_get_addr() will return the kernel
address for this function, or 0 if it cannot find this function name
in /proc/kallsyms. This function will be used later when a kernel
address is used to initiate a kprobe perf event.

Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/trace_helpers.c
tools/testing/selftests/bpf/trace_helpers.h

index 8fb4fe8..3868dcb 100644 (file)
@@ -72,6 +72,18 @@ struct ksym *ksym_search(long key)
        return &syms[0];
 }
 
+long ksym_get_addr(const char *name)
+{
+       int i;
+
+       for (i = 0; i < sym_cnt; i++) {
+               if (strcmp(syms[i].name, name) == 0)
+                       return syms[i].addr;
+       }
+
+       return 0;
+}
+
 static int page_size;
 static int page_cnt = 8;
 static struct perf_event_mmap_page *header;
index 36d90e3..3b4bcf7 100644 (file)
@@ -11,6 +11,7 @@ struct ksym {
 
 int load_kallsyms(void);
 struct ksym *ksym_search(long key);
+long ksym_get_addr(const char *name);
 
 typedef enum bpf_perf_event_ret (*perf_event_print_fn)(void *data, int size);