regfi
Loading...
Searching...
No Matches
lru_cache.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2008-2010 Timothy D. Morgan
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3 of the License.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 *
17 * $Id: lru_cache.h 253 2011-06-13 02:27:42Z tim $
18 */
19
28#ifndef LRU_CACHE_H
29#define LRU_CACHE_H
30
31#include <stdbool.h>
32#include <stdint.h>
33#include <stdlib.h>
34#include <stdio.h>
35#include <string.h>
36#include <unistd.h>
37#include <talloc.h>
38
39#include "compat.h"
40
41
44
46{
47 void* index;
48 uint32_t index_len;
49 void* data;
51 lru_cache_element* older;
52 lru_cache_element* newer;
53};
54
55
57typedef struct _lru_cache
58{
59 uint32_t secret;
60 uint32_t num_keys;
61 uint32_t num_buckets;
62 uint32_t max_keys;
63 lru_cache_element* oldest;
64 lru_cache_element* newest;
65 lru_cache_element** table;
66 bool talloc_data;
67} lru_cache;
68
69
73_EXPORT()
74lru_cache* lru_cache_create(uint32_t max_keys, uint32_t secret);
75
76
80_EXPORT()
81lru_cache* lru_cache_create_ctx(void* talloc_ctx, uint32_t max_keys,
82 uint32_t secret, bool talloc_data);
83
84
88_EXPORT()
90
91
95_EXPORT()
96bool lru_cache_update(lru_cache* ht, const void* index,
97 uint32_t index_len, void* data);
98
105_EXPORT()
106void* lru_cache_find(lru_cache* ht, const void* index,
107 uint32_t index_len);
108
117_EXPORT()
118bool lru_cache_remove(lru_cache* ht, const void* index,
119 uint32_t index_len);
120
121#endif
lru_cache * lru_cache_create_ctx(void *talloc_ctx, uint32_t max_keys, uint32_t secret, bool talloc_data)
XXX: finish documenting.
Definition lru_cache.c:111
bool lru_cache_update(lru_cache *ht, const void *index, uint32_t index_len, void *data)
XXX: finish documenting.
Definition lru_cache.c:159
void lru_cache_destroy(lru_cache *ht)
XXX: finish documenting.
Definition lru_cache.c:151
void * lru_cache_find(lru_cache *ht, const void *index, uint32_t index_len)
XXX: finish documenting.
Definition lru_cache.c:280
lru_cache * lru_cache_create(uint32_t max_keys, uint32_t secret)
XXX: finish documenting.
Definition lru_cache.c:105
bool lru_cache_remove(lru_cache *ht, const void *index, uint32_t index_len)
XXX: finish documenting.
Definition lru_cache.c:318
Definition lru_cache.h:46
XXX: document this.
Definition lru_cache.h:58