blob: 9d4adb7fd8341e702a710e6904f53b5f9a970454 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -07002#include <stdio.h>
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -07003#include <unistd.h>
Daniel T. Lee63841bc2020-05-16 13:06:05 +09004#include <bpf/libbpf.h>
Daniel T. Lee24a60342020-03-21 19:04:23 +09005#include "trace_helpers.h"
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -07006
7int main(int ac, char **argv)
8{
Daniel T. Lee63841bc2020-05-16 13:06:05 +09009 struct bpf_link *link = NULL;
10 struct bpf_program *prog;
11 struct bpf_object *obj;
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -070012 char filename[256];
Daniel T. Lee63841bc2020-05-16 13:06:05 +090013 FILE *f;
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -070014
15 snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
Daniel T. Lee63841bc2020-05-16 13:06:05 +090016 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 }
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -070021
Daniel T. Lee63841bc2020-05-16 13:06:05 +090022 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;
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -070039 }
40
41 f = popen("taskset 1 ping -c5 localhost", "r");
42 (void) f;
43
44 read_trace_pipe();
45
Daniel T. Lee63841bc2020-05-16 13:06:05 +090046cleanup:
47 bpf_link__destroy(link);
48 bpf_object__close(obj);
Alexei Starovoitovb896c4f2015-03-25 12:49:23 -070049 return 0;
50}