tracex1_user.c 1.1 KB

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