blob: 8d3e9cfa190978e56d00bde53a22d3f72f9e9b7e [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Alexei Starovoitov9d8b6122016-03-08 15:07:52 -08002#include <stdio.h>
3#include <unistd.h>
4#include <linux/bpf.h>
5#include <string.h>
6#include <assert.h>
7#include <sys/resource.h>
8#include "libbpf.h"
9#include "bpf_load.h"
Yonghong Song28dbf862018-04-28 22:28:13 -070010#include "trace_helpers.h"
Alexei Starovoitov9d8b6122016-03-08 15:07:52 -080011
12int main(int ac, char **argv)
13{
14 struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
15 long key, next_key, value;
16 char filename[256];
17 struct ksym *sym;
18 int i;
19
20 snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
21 setrlimit(RLIMIT_MEMLOCK, &r);
22
23 if (load_kallsyms()) {
24 printf("failed to process /proc/kallsyms\n");
25 return 2;
26 }
27
28 if (load_bpf_file(filename)) {
29 printf("%s", bpf_log_buf);
30 return 1;
31 }
32
33 for (i = 0; i < 5; i++) {
34 key = 0;
35 printf("kprobing funcs:");
Joe Stringerd40fc182016-12-14 14:43:38 -080036 while (bpf_map_get_next_key(map_fd[0], &key, &next_key) == 0) {
37 bpf_map_lookup_elem(map_fd[0], &next_key, &value);
Alexei Starovoitov9d8b6122016-03-08 15:07:52 -080038 assert(next_key == value);
39 sym = ksym_search(value);
40 printf(" %s", sym->name);
41 key = next_key;
42 }
43 if (key)
44 printf("\n");
45 key = 0;
Joe Stringerd40fc182016-12-14 14:43:38 -080046 while (bpf_map_get_next_key(map_fd[0], &key, &next_key) == 0)
47 bpf_map_delete_elem(map_fd[0], &next_key);
Alexei Starovoitov9d8b6122016-03-08 15:07:52 -080048 sleep(1);
49 }
50
51 return 0;
52}