On Tue, Nov 17, 2020 at 02:56:39PM +0000, Daniel T. Lee wrote: > This commit refactors the existing kprobe program with libbpf bpf > loader. To attach bpf program, this uses generic bpf_program__attach() > approach rather than using bpf_load's load_bpf_file(). > > To attach bpf to perf_event, instead of using previous ioctl method, > this commit uses bpf_program__attach_perf_event since it manages the > enable of perf_event and attach of BPF programs to it, which is much > more intuitive way to achieve. > > Also, explicit close(fd) has been removed since event will be closed > inside bpf_link__destroy() automatically. > > DEBUGFS macro from trace_helpers has been used to control uprobe events. > Furthermore, to prevent conflict of same named uprobe events, O_TRUNC > flag has been used to clear 'uprobe_events' interface. > > Signed-off-by: Daniel T. Lee <danieltimlee@xxxxxxxxx> > --- > samples/bpf/Makefile | 2 +- > samples/bpf/task_fd_query_user.c | 101 ++++++++++++++++++++++--------- > 2 files changed, 74 insertions(+), 29 deletions(-) > > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > index 7a643595ac6c..36b261c7afc7 100644 > --- a/samples/bpf/Makefile > +++ b/samples/bpf/Makefile > @@ -107,7 +107,7 @@ xdp_adjust_tail-objs := xdp_adjust_tail_user.o > xdpsock-objs := xdpsock_user.o > xsk_fwd-objs := xsk_fwd.o > xdp_fwd-objs := xdp_fwd_user.o > -task_fd_query-objs := bpf_load.o task_fd_query_user.o $(TRACE_HELPERS) > +task_fd_query-objs := task_fd_query_user.o $(TRACE_HELPERS) > xdp_sample_pkts-objs := xdp_sample_pkts_user.o $(TRACE_HELPERS) > ibumad-objs := bpf_load.o ibumad_user.o $(TRACE_HELPERS) > hbm-objs := hbm.o $(CGROUP_HELPERS) $(TRACE_HELPERS) > diff --git a/samples/bpf/task_fd_query_user.c b/samples/bpf/task_fd_query_user.c > index b68bd2f8fdc9..0891ef3a4779 100644 > --- a/samples/bpf/task_fd_query_user.c > +++ b/samples/bpf/task_fd_query_user.c > @@ -15,12 +15,15 @@ > #include <sys/stat.h> > #include <linux/perf_event.h> > > +#include <bpf/bpf.h> > #include <bpf/libbpf.h> > -#include "bpf_load.h" > #include "bpf_util.h" > #include "perf-sys.h" > #include "trace_helpers.h" > > +struct bpf_program *progs[2]; > +struct bpf_link *links[2]; static