Commit 24a6034a authored by Daniel T. Lee's avatar Daniel T. Lee Committed by Daniel Borkmann

samples, bpf: Move read_trace_pipe to trace_helpers

To reduce the reliance of trace samples (trace*_user) on bpf_load,
move read_trace_pipe to trace_helpers. By moving this bpf_loader helper
elsewhere, trace functions can be easily migrated to libbbpf.
Signed-off-by: default avatarDaniel T. Lee <danieltimlee@gmail.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200321100424.1593964-2-danieltimlee@gmail.com
parent c9b24312
...@@ -64,11 +64,11 @@ fds_example-objs := fds_example.o ...@@ -64,11 +64,11 @@ fds_example-objs := fds_example.o
sockex1-objs := sockex1_user.o sockex1-objs := sockex1_user.o
sockex2-objs := sockex2_user.o sockex2-objs := sockex2_user.o
sockex3-objs := bpf_load.o sockex3_user.o sockex3-objs := bpf_load.o sockex3_user.o
tracex1-objs := bpf_load.o tracex1_user.o tracex1-objs := bpf_load.o tracex1_user.o $(TRACE_HELPERS)
tracex2-objs := bpf_load.o tracex2_user.o tracex2-objs := bpf_load.o tracex2_user.o
tracex3-objs := bpf_load.o tracex3_user.o tracex3-objs := bpf_load.o tracex3_user.o
tracex4-objs := bpf_load.o tracex4_user.o tracex4-objs := bpf_load.o tracex4_user.o
tracex5-objs := bpf_load.o tracex5_user.o tracex5-objs := bpf_load.o tracex5_user.o $(TRACE_HELPERS)
tracex6-objs := bpf_load.o tracex6_user.o tracex6-objs := bpf_load.o tracex6_user.o
tracex7-objs := bpf_load.o tracex7_user.o tracex7-objs := bpf_load.o tracex7_user.o
test_probe_write_user-objs := bpf_load.o test_probe_write_user_user.o test_probe_write_user-objs := bpf_load.o test_probe_write_user_user.o
......
...@@ -665,23 +665,3 @@ int load_bpf_file_fixup_map(const char *path, fixup_map_cb fixup_map) ...@@ -665,23 +665,3 @@ int load_bpf_file_fixup_map(const char *path, fixup_map_cb fixup_map)
{ {
return do_load_bpf_file(path, fixup_map); return do_load_bpf_file(path, fixup_map);
} }
void read_trace_pipe(void)
{
int trace_fd;
trace_fd = open(DEBUGFS "trace_pipe", O_RDONLY, 0);
if (trace_fd < 0)
return;
while (1) {
static char buf[4096];
ssize_t sz;
sz = read(trace_fd, buf, sizeof(buf) - 1);
if (sz > 0) {
buf[sz] = 0;
puts(buf);
}
}
}
...@@ -53,6 +53,5 @@ extern int map_data_count; ...@@ -53,6 +53,5 @@ extern int map_data_count;
int load_bpf_file(char *path); int load_bpf_file(char *path);
int load_bpf_file_fixup_map(const char *path, fixup_map_cb fixup_map); int load_bpf_file_fixup_map(const char *path, fixup_map_cb fixup_map);
void read_trace_pipe(void);
int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags); int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags);
#endif #endif
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <unistd.h> #include <unistd.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "bpf_load.h" #include "bpf_load.h"
#include "trace_helpers.h"
int main(int ac, char **argv) int main(int ac, char **argv)
{ {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "bpf_load.h" #include "bpf_load.h"
#include <sys/resource.h> #include <sys/resource.h>
#include "trace_helpers.h"
/* install fake seccomp program to enable seccomp code path inside the kernel, /* install fake seccomp program to enable seccomp code path inside the kernel,
* so that our kprobe attached to seccomp_phase1() can be triggered * so that our kprobe attached to seccomp_phase1() can be triggered
......
...@@ -4,12 +4,15 @@ ...@@ -4,12 +4,15 @@
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h>
#include <poll.h> #include <poll.h>
#include <unistd.h> #include <unistd.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <sys/mman.h> #include <sys/mman.h>
#include "trace_helpers.h" #include "trace_helpers.h"
#define DEBUGFS "/sys/kernel/debug/tracing/"
#define MAX_SYMS 300000 #define MAX_SYMS 300000
static struct ksym syms[MAX_SYMS]; static struct ksym syms[MAX_SYMS];
static int sym_cnt; static int sym_cnt;
...@@ -86,3 +89,23 @@ long ksym_get_addr(const char *name) ...@@ -86,3 +89,23 @@ long ksym_get_addr(const char *name)
return 0; return 0;
} }
void read_trace_pipe(void)
{
int trace_fd;
trace_fd = open(DEBUGFS "trace_pipe", O_RDONLY, 0);
if (trace_fd < 0)
return;
while (1) {
static char buf[4096];
ssize_t sz;
sz = read(trace_fd, buf, sizeof(buf) - 1);
if (sz > 0) {
buf[sz] = 0;
puts(buf);
}
}
}
...@@ -12,5 +12,6 @@ struct ksym { ...@@ -12,5 +12,6 @@ struct ksym {
int load_kallsyms(void); int load_kallsyms(void);
struct ksym *ksym_search(long key); struct ksym *ksym_search(long key);
long ksym_get_addr(const char *name); long ksym_get_addr(const char *name);
void read_trace_pipe(void);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment