pdc.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef DBENGINE_PDC_H
  3. #define DBENGINE_PDC_H
  4. #include "../engine/rrdengine.h"
  5. struct rrdeng_cmd;
  6. #ifdef PDC_USE_JULYL
  7. #define PDCJudyLIns JulyLIns
  8. #define PDCJudyLGet JulyLGet
  9. #define PDCJudyLFirst JulyLFirst
  10. #define PDCJudyLNext JulyLNext
  11. #define PDCJudyLLast JulyLLast
  12. #define PDCJudyLPrev JulyLPrev
  13. #define PDCJudyLFirstThenNext JulyLFirstThenNext
  14. #define PDCJudyLLastThenPrev JulyLLastThenPrev
  15. #define PDCJudyLFreeArray JulyLFreeArray
  16. #else
  17. #define PDCJudyLIns JudyLIns
  18. #define PDCJudyLGet JudyLGet
  19. #define PDCJudyLFirst JudyLFirst
  20. #define PDCJudyLNext JudyLNext
  21. #define PDCJudyLLast JudyLLast
  22. #define PDCJudyLPrev JudyLPrev
  23. #define PDCJudyLFirstThenNext JudyLFirstThenNext
  24. #define PDCJudyLLastThenPrev JudyLLastThenPrev
  25. #define PDCJudyLFreeArray JudyLFreeArray
  26. #endif
  27. typedef struct extent_page_details_list EPDL;
  28. typedef void (*execute_extent_page_details_list_t)(struct rrdengine_instance *ctx, EPDL *epdl, enum storage_priority priority);
  29. void pdc_to_epdl_router(struct rrdengine_instance *ctx, struct page_details_control *pdc, execute_extent_page_details_list_t exec_first_extent_list, execute_extent_page_details_list_t exec_rest_extent_list);
  30. void epdl_find_extent_and_populate_pages(struct rrdengine_instance *ctx, EPDL *epdl, bool worker);
  31. size_t pdc_cache_size(void);
  32. size_t pd_cache_size(void);
  33. size_t epdl_cache_size(void);
  34. size_t deol_cache_size(void);
  35. size_t extent_buffer_cache_size(void);
  36. void pdc_init(void);
  37. void page_details_init(void);
  38. void epdl_init(void);
  39. void deol_init(void);
  40. void extent_buffer_cleanup1(void);
  41. void epdl_cmd_dequeued(void *epdl_ptr);
  42. void epdl_cmd_queued(void *epdl_ptr, struct rrdeng_cmd *cmd);
  43. struct extent_buffer {
  44. size_t bytes;
  45. struct {
  46. struct extent_buffer *prev;
  47. struct extent_buffer *next;
  48. } cache;
  49. uint8_t data[];
  50. };
  51. void extent_buffer_init(void);
  52. struct extent_buffer *extent_buffer_get(size_t size);
  53. void extent_buffer_release(struct extent_buffer *eb);
  54. #endif // DBENGINE_PDC_H