ebpf_sync.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_SYNC_H
  3. #define NETDATA_EBPF_SYNC_H 1
  4. // charts
  5. #define NETDATA_EBPF_SYNC_CHART "sync"
  6. #define NETDATA_EBPF_MSYNC_CHART "memory_map"
  7. #define NETDATA_EBPF_FILE_SYNC_CHART "file_sync"
  8. #define NETDATA_EBPF_FILE_SEGMENT_CHART "file_segment"
  9. #define NETDATA_EBPF_SYNC_SUBMENU "synchronization (eBPF)"
  10. #define NETDATA_EBPF_SYNC_SLEEP_MS 800000ULL
  11. // configuration file
  12. #define NETDATA_SYNC_CONFIG_FILE "sync.conf"
  13. #define NETDATA_SYNC_CONFIG_NAME "syscalls"
  14. enum sync_syscalls_index {
  15. NETDATA_SYNC_SYNC_IDX,
  16. NETDATA_SYNC_SYNCFS_IDX,
  17. NETDATA_SYNC_MSYNC_IDX,
  18. NETDATA_SYNC_FSYNC_IDX,
  19. NETDATA_SYNC_FDATASYNC_IDX,
  20. NETDATA_SYNC_SYNC_FILE_RANGE_IDX,
  21. NETDATA_SYNC_IDX_END
  22. };
  23. typedef struct ebpf_sync_syscalls {
  24. char *syscall;
  25. int enabled;
  26. uint32_t flags;
  27. struct bpf_object *objects;
  28. struct bpf_link **probe_links;
  29. ebpf_data_t kernel_info;
  30. } ebpf_sync_syscalls_t;
  31. enum netdata_sync_charts {
  32. NETDATA_SYNC_CALL,
  33. // Keep this as last and don't skip numbers as it is used as element counter
  34. NETDATA_SYNC_END
  35. };
  36. enum netdata_sync_table {
  37. NETDATA_SYNC_GLOBLAL_TABLE
  38. };
  39. extern void *ebpf_sync_thread(void *ptr);
  40. #endif /* NETDATA_EBPF_SYNC_H */