From 8f29dedf2db8a6974af431c81e3df43dde43a5d1 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Tue, 20 Jun 2006 00:13:12 +0000 Subject: [PATCH] add sigar_cache_find function --- include/sigar_util.h | 3 +++ src/sigar_cache.c | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/sigar_util.h b/include/sigar_util.h index f48933c7..3692a1fb 100644 --- a/include/sigar_util.h +++ b/include/sigar_util.h @@ -107,6 +107,9 @@ sigar_cache_t *sigar_cache_new(int size); sigar_cache_entry_t *sigar_cache_get(sigar_cache_t *table, sigar_uint64_t key); +sigar_cache_entry_t *sigar_cache_find(sigar_cache_t *table, + sigar_uint64_t key); + void sigar_cache_destroy(sigar_cache_t *table); #endif /* SIGAR_UTIL_H */ diff --git a/src/sigar_cache.c b/src/sigar_cache.c index 235e0fe2..be6f43fe 100644 --- a/src/sigar_cache.c +++ b/src/sigar_cache.c @@ -85,6 +85,24 @@ static void sigar_cache_rehash(sigar_cache_t *table) #define SIGAR_CACHE_IX(t, k) \ t->entries + (k % t->size) +sigar_cache_entry_t *sigar_cache_find(sigar_cache_t *table, + sigar_uint64_t key) +{ + sigar_cache_entry_t *entry, **ptr; + + for (ptr = SIGAR_CACHE_IX(table, key), entry = *ptr; + entry; + ptr = &entry->next, entry = *ptr) + { + if (entry->id == key) { + return entry; + } + } + + return NULL; +} + +/* create entry if it does not exist */ sigar_cache_entry_t *sigar_cache_get(sigar_cache_t *table, sigar_uint64_t key) {