gen-bindings 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env sh
  2. LIBBPF_DIR=$1
  3. OUTPUT_DIR=$2
  4. if test -z "$LIBBPF_DIR"; then
  5. echo "error: no libbpf dir provided"
  6. exit 1
  7. fi
  8. if test -z "$OUTPUT_DIR"; then
  9. echo "error: no output dir provided"
  10. exit 1
  11. fi
  12. BPF_TYPES="\
  13. bpf_cmd \
  14. bpf_insn \
  15. bpf_attr \
  16. bpf_map_type \
  17. bpf_prog_type \
  18. bpf_attach_type
  19. "
  20. BPF_VARS="\
  21. BPF_PSEUDO_.*
  22. "
  23. PERF_TYPES="\
  24. perf_event_attr \
  25. perf_sw_ids \
  26. perf_event_sample_format \
  27. perf_event_mmap_page \
  28. perf_event_header \
  29. perf_type_id \
  30. perf_event_type
  31. "
  32. PERF_VARS="\
  33. PERF_FLAG_.* \
  34. PERF_EVENT_.*
  35. "
  36. bindgen $LIBBPF_DIR/include/uapi/linux/bpf.h \
  37. --no-layout-tests \
  38. --default-enum-style moduleconsts \
  39. $(for ty in $BPF_TYPES; do
  40. echo --whitelist-type "$ty"
  41. done) \
  42. $(for var in $BPF_VARS; do
  43. echo --whitelist-var "$var"
  44. done) \
  45. > $OUTPUT_DIR/bpf_bindings.rs
  46. bindgen include/perf_wrapper.h \
  47. --no-layout-tests \
  48. --default-enum-style moduleconsts \
  49. $(for ty in $PERF_TYPES; do
  50. echo --whitelist-type "$ty"
  51. done) \
  52. $(for var in $PERF_VARS; do
  53. echo --whitelist-var "$var"
  54. done) \
  55. > $OUTPUT_DIR/perf_bindings.rs