4 #include <lunaix/ds/llist.h>
5 #include <lunaix/ds/spinlock.h>
6 #include <lunaix/types.h>
10 struct llist_header lru_nodes;
13 typedef int (*evict_cb)(struct lru_node* lru_obj);
17 struct llist_header lead_node;
18 struct llist_header zones;
26 unsigned int n_single;
34 unsigned char attempts;
41 lru_new_zone(const char* name, evict_cb try_evict_cb);
44 lru_use_one(struct lru_zone* zone, struct lru_node* node);
47 lru_evict_one(struct lru_zone* zone);
50 lru_remove(struct lru_zone* zone, struct lru_node* node);
53 lru_evict_half(struct lru_zone* zone);
56 lru_evict_all(struct lru_zone* zone);
59 lru_free_zone(struct lru_zone* zone);
61 #endif /* __LUNAIX_LRU_H */