Lines Matching refs:lru

105 static void pfect_lru_init(struct pfect_lru *lru, unsigned int lru_size,  in pfect_lru_init()  argument
108 lru->map_fd = bpf_create_map(BPF_MAP_TYPE_HASH, in pfect_lru_init()
112 assert(lru->map_fd != -1); in pfect_lru_init()
114 lru->free_nodes = malloc(lru_size * sizeof(struct pfect_lru_node)); in pfect_lru_init()
115 assert(lru->free_nodes); in pfect_lru_init()
117 INIT_LIST_HEAD(&lru->list); in pfect_lru_init()
118 lru->cur_size = 0; in pfect_lru_init()
119 lru->lru_size = lru_size; in pfect_lru_init()
120 lru->nr_unique = lru->nr_misses = lru->total = 0; in pfect_lru_init()
123 static void pfect_lru_destroy(struct pfect_lru *lru) in pfect_lru_destroy() argument
125 close(lru->map_fd); in pfect_lru_destroy()
126 free(lru->free_nodes); in pfect_lru_destroy()
129 static int pfect_lru_lookup_or_insert(struct pfect_lru *lru, in pfect_lru_lookup_or_insert() argument
135 lru->total++; in pfect_lru_lookup_or_insert()
136 if (!bpf_map_lookup_elem(lru->map_fd, &key, &node)) { in pfect_lru_lookup_or_insert()
138 list_move(&node->list, &lru->list); in pfect_lru_lookup_or_insert()
144 if (lru->cur_size < lru->lru_size) { in pfect_lru_lookup_or_insert()
145 node = &lru->free_nodes[lru->cur_size++]; in pfect_lru_lookup_or_insert()
150 node = list_last_entry(&lru->list, in pfect_lru_lookup_or_insert()
153 bpf_map_update_elem(lru->map_fd, &node->key, &null_node, BPF_EXIST); in pfect_lru_lookup_or_insert()
157 list_move(&node->list, &lru->list); in pfect_lru_lookup_or_insert()
159 lru->nr_misses++; in pfect_lru_lookup_or_insert()
161 assert(!bpf_map_update_elem(lru->map_fd, &key, &node, BPF_EXIST)); in pfect_lru_lookup_or_insert()
163 lru->nr_unique++; in pfect_lru_lookup_or_insert()
164 assert(!bpf_map_update_elem(lru->map_fd, &key, &node, BPF_NOEXIST)); in pfect_lru_lookup_or_insert()