// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2024 Google LLC */ #include "gendwarfksyms.h" struct cache_item { unsigned long key; int value; struct hlist_node hash; }; void cache_set(struct cache *cache, unsigned long key, int value) { struct cache_item *ci; ci = xmalloc(sizeof(struct cache_item)); ci->key = key; ci->value = value; hash_add(cache->cache, &ci->hash, hash_32(key)); } int cache_get(struct cache *cache, unsigned long key) { struct cache_item *ci; hash_for_each_possible(cache->cache, ci, hash, hash_32(key)) { if (ci->key == key) return ci->value; } return -1; } void cache_init(struct cache *cache) { hash_init(cache->cache); } void cache_free(struct cache *cache) { struct hlist_node *tmp; struct cache_item *ci; hash_for_each_safe(cache->cache, ci, tmp, hash) { free(ci); } hash_init(cache->cache); }