51 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <stdio.h>3#include <unistd.h>4#include <bpf/libbpf.h>5#include "trace_helpers.h"6 7int main(int ac, char **argv)8{9 struct bpf_link *link = NULL;10 struct bpf_program *prog;11 struct bpf_object *obj;12 char filename[256];13 FILE *f;14 15 snprintf(filename, sizeof(filename), "%s.bpf.o", argv[0]);16 obj = bpf_object__open_file(filename, NULL);17 if (libbpf_get_error(obj)) {18 fprintf(stderr, "ERROR: opening BPF object file failed\n");19 return 0;20 }21 22 prog = bpf_object__find_program_by_name(obj, "bpf_prog1");23 if (!prog) {24 fprintf(stderr, "ERROR: finding a prog in obj file failed\n");25 goto cleanup;26 }27 28 /* load BPF program */29 if (bpf_object__load(obj)) {30 fprintf(stderr, "ERROR: loading BPF object file failed\n");31 goto cleanup;32 }33 34 link = bpf_program__attach(prog);35 if (libbpf_get_error(link)) {36 fprintf(stderr, "ERROR: bpf_program__attach failed\n");37 link = NULL;38 goto cleanup;39 }40 41 f = popen("taskset 1 ping -c5 localhost", "r");42 (void) f;43 44 read_trace_pipe();45 46cleanup:47 bpf_link__destroy(link);48 bpf_object__close(obj);49 return 0;50}51