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