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