ebpf_filesystem.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_FILESYSTEM_H
  3. #define NETDATA_EBPF_FILESYSTEM_H 1
  4. #include "ebpf.h"
  5. #define NETDATA_FILESYSTEM_MAX_BINS 24UL
  6. #define NETDATA_FS_MAX_DIST_NAME 64UL
  7. #define NETDATA_FILESYSTEM_CONFIG_NAME "filesystem"
  8. #define NETDATA_FILESYSTEM_READ_SLEEP_MS 600000ULL
  9. typedef struct netdata_fs_hist {
  10. uint32_t hist_id;
  11. uint32_t bin;
  12. } netdata_fs_hist_t;
  13. enum filesystem_limit {
  14. NETDATA_KEY_CALLS_READ = 24,
  15. NETDATA_KEY_CALLS_WRITE = 48,
  16. NETDATA_KEY_CALLS_OPEN = 72,
  17. NETDATA_KEY_CALLS_SYNC = 96
  18. };
  19. enum netdata_filesystem_flags {
  20. NETDATA_FILESYSTEM_FLAG_NO_PARTITION = 0,
  21. NETDATA_FILESYSTEM_LOAD_EBPF_PROGRAM = 1,
  22. NETDATA_FILESYSTEM_FLAG_HAS_PARTITION = 2,
  23. NETDATA_FILESYSTEM_FLAG_CHART_CREATED = 4,
  24. NETDATA_FILESYSTEM_FILL_ADDRESS_TABLE = 8,
  25. NETDATA_FILESYSTEM_REMOVE_CHARTS = 16
  26. };
  27. typedef struct netdata_ebpf_histogram {
  28. char *name;
  29. char *title;
  30. int order;
  31. uint64_t histogram[NETDATA_FILESYSTEM_MAX_BINS];
  32. } netdata_ebpf_histogram_t;
  33. enum netdata_filesystem_table {
  34. NETDATA_MAIN_FS_TABLE,
  35. NETDATA_ADDR_FS_TABLE
  36. };
  37. typedef struct ebpf_filesystem_partitions {
  38. char *filesystem;
  39. char *family;
  40. char *family_name;
  41. struct bpf_object *objects;
  42. struct bpf_link **probe_links;
  43. netdata_ebpf_histogram_t hread;
  44. netdata_ebpf_histogram_t hwrite;
  45. netdata_ebpf_histogram_t hopen;
  46. netdata_ebpf_histogram_t hsync;
  47. uint32_t flags;
  48. uint32_t enabled;
  49. ebpf_data_t kernel_info;
  50. ebpf_addresses_t addresses;
  51. } ebpf_filesystem_partitions_t;
  52. extern void *ebpf_filesystem_thread(void *ptr);
  53. extern struct config fs_config;
  54. #endif /* NETDATA_EBPF_FILESYSTEM_H */