feat: lru eviction policy on page caches
[lunaix-os.git] / lunaix-os / includes / lunaix / ds / lru.h
1 #ifndef __LUNAIX_LRU_H
2 #define __LUNAIX_LRU_H
3
4 #include <lunaix/ds/llist.h>
5
6 struct lru_zone
7 {
8     struct llist_header lead_node;
9     struct llist_header zones;
10 };
11
12 struct lru_node
13 {
14     struct llist_header lru_nodes;
15 };
16
17 struct lru_zone*
18 lru_new_zone();
19
20 void
21 lru_use_one(struct lru_zone* zone, struct lru_node* node);
22
23 struct lru_node*
24 lru_evict_one(struct lru_zone* zone);
25
26 void
27 lru_remove(struct lru_node* node);
28
29 #endif /* __LUNAIX_LRU_H */