+++ /dev/null
-#include <lunaix/ds/lru.h>
-#include <lunaix/mm/valloc.h>
-
-struct llist_header zone_lead = { .next = &zone_lead, .prev = &zone_lead };
-
-struct lru_zone*
-lru_new_zone()
-{
- struct lru_zone* zone = valloc(sizeof(struct lru_zone));
- if (!zone) {
- return NULL;
- }
-
- llist_init_head(&zone->lead_node);
- llist_append(&zone_lead, &zone->zones);
-
- return zone;
-}
-
-void
-lru_use_one(struct lru_zone* zone, struct lru_node* node)
-{
- if (node->lru_nodes.next && node->lru_nodes.prev) {
- llist_delete(&node->lru_nodes);
- }
-
- llist_prepend(&zone->lead_node, &node->lru_nodes);
-}
-
-struct lru_node*
-lru_evict_one(struct lru_zone* zone)
-{
- struct llist_header* tail = zone->lead_node.prev;
- if (tail == &zone->lead_node) {
- return;
- }
-
- llist_delete(tail);
-
- return container_of(tail, struct lru_node, lru_nodes);
-}
-
-void
-lru_remove(struct lru_node* node)
-{
- if (node->lru_nodes.next && node->lru_nodes.prev) {
- llist_delete(&node->lru_nodes);
- }
-}
\ No newline at end of file