master
h 59 lines 1.48 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_PAGECACHE_H
4 #define NETDATA_PAGECACHE_H
5
6 #include "rrdengine.h"
7
8 extern struct mrg *main_mrg;
9 extern struct pgc *main_cache;
10 extern struct pgc *open_cache;
11 extern struct pgc *extent_cache;
12
13 /* Forward declarations */
14 struct rrdengine_instance;
15
16 #define INVALID_TIME (0)
17
18 extern struct rrdeng_cache_efficiency_stats rrdeng_cache_efficiency_stats;
19
20 struct page_descr_with_data {
21 UUIDMAP_ID uuid_id;
22 Word_t metric_id;
23 usec_t start_time_ut;
24 usec_t end_time_ut;
25 uint8_t type;
26 uint32_t update_every_s;
27 uint32_t page_length;
28 struct pgd *pgd;
29
30 struct {
31 struct page_descr_with_data *prev;
32 struct page_descr_with_data *next;
33 } link;
34 };
35
36 struct pg_alignment {
37 uint32_t refcount;
38 };
39
40 struct rrdeng_query_handle;
41 struct page_details_control;
42
43 void rrdeng_prep_wait(struct page_details_control *pdc);
44 void rrdeng_prep_query(struct page_details_control *pdc, bool worker);
45 void pg_cache_preload(struct rrdeng_query_handle *handle);
46 struct pgc_page *pg_cache_lookup_next(struct rrdengine_instance *ctx, struct page_details_control *pdc, time_t now_s, uint32_t last_update_every_s, size_t *entries);
47 void pgc_and_mrg_initialize(void);
48
49 void pgc_open_add_hot_page(
50 Word_t section,
51 Word_t metric_id,
52 time_t start_time_s,
53 time_t end_time_s,
54 uint32_t update_every_s,
55 struct rrdengine_datafile *datafile,
56 uint64_t extent_offset,
57 unsigned extent_size);
58
59 #endif /* NETDATA_PAGECACHE_H */