Lines Matching refs:lru

99 static void pfect_lru_init(struct pfect_lru *lru, unsigned int lru_size,  in pfect_lru_init()  argument
102 lru->map_fd = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, in pfect_lru_init()
106 assert(lru->map_fd != -1); in pfect_lru_init()
108 lru->free_nodes = malloc(lru_size * sizeof(struct pfect_lru_node)); in pfect_lru_init()
109 assert(lru->free_nodes); in pfect_lru_init()
111 INIT_LIST_HEAD(&lru->list); in pfect_lru_init()
112 lru->cur_size = 0; in pfect_lru_init()
113 lru->lru_size = lru_size; in pfect_lru_init()
114 lru->nr_unique = lru->nr_misses = lru->total = 0; in pfect_lru_init()
117 static void pfect_lru_destroy(struct pfect_lru *lru) in pfect_lru_destroy() argument
119 close(lru->map_fd); in pfect_lru_destroy()
120 free(lru->free_nodes); in pfect_lru_destroy()
123 static int pfect_lru_lookup_or_insert(struct pfect_lru *lru, in pfect_lru_lookup_or_insert() argument
129 lru->total++; in pfect_lru_lookup_or_insert()
130 if (!bpf_map_lookup_elem(lru->map_fd, &key, &node)) { in pfect_lru_lookup_or_insert()
132 list_move(&node->list, &lru->list); in pfect_lru_lookup_or_insert()
138 if (lru->cur_size < lru->lru_size) { in pfect_lru_lookup_or_insert()
139 node = &lru->free_nodes[lru->cur_size++]; in pfect_lru_lookup_or_insert()
144 node = list_last_entry(&lru->list, in pfect_lru_lookup_or_insert()
147 bpf_map_update_elem(lru->map_fd, &node->key, &null_node, BPF_EXIST); in pfect_lru_lookup_or_insert()
151 list_move(&node->list, &lru->list); in pfect_lru_lookup_or_insert()
153 lru->nr_misses++; in pfect_lru_lookup_or_insert()
155 assert(!bpf_map_update_elem(lru->map_fd, &key, &node, BPF_EXIST)); in pfect_lru_lookup_or_insert()
157 lru->nr_unique++; in pfect_lru_lookup_or_insert()
158 assert(!bpf_map_update_elem(lru->map_fd, &key, &node, BPF_NOEXIST)); in pfect_lru_lookup_or_insert()