add sigar_cache_find function
This commit is contained in:
parent
0aa428e669
commit
8f29dedf2d
|
@ -107,6 +107,9 @@ sigar_cache_t *sigar_cache_new(int size);
|
||||||
sigar_cache_entry_t *sigar_cache_get(sigar_cache_t *table,
|
sigar_cache_entry_t *sigar_cache_get(sigar_cache_t *table,
|
||||||
sigar_uint64_t key);
|
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);
|
void sigar_cache_destroy(sigar_cache_t *table);
|
||||||
|
|
||||||
#endif /* SIGAR_UTIL_H */
|
#endif /* SIGAR_UTIL_H */
|
||||||
|
|
|
@ -85,6 +85,24 @@ static void sigar_cache_rehash(sigar_cache_t *table)
|
||||||
#define SIGAR_CACHE_IX(t, k) \
|
#define SIGAR_CACHE_IX(t, k) \
|
||||||
t->entries + (k % t->size)
|
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_cache_entry_t *sigar_cache_get(sigar_cache_t *table,
|
||||||
sigar_uint64_t key)
|
sigar_uint64_t key)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue