57 fatal(
"Heap Replacement: Unknown StoreEntry node type");
112 node->data =
nullptr;
177 walker->
_data = heap_walk;
212 entry->
lock(
"heap_purgeNext");
233 if (heap_walker->
min_age > 0) {
243 entry->
unlock(
"heap_purgeDone");
261 walker->
_data = heap_walk;
278 memset(policy, 0,
sizeof(*policy));
292 heap_data->
policy = policy;
302 if (!strcmp(keytype,
"GDSF"))
304 else if (!strcmp(keytype,
"LFUDA"))
306 else if (!strcmp(keytype,
"LRU"))
309 debugs(81,
DBG_CRITICAL,
"ERROR: createRemovalPolicy_heap: Unknown key type \"" << keytype <<
"\". Using LRU");
324 policy->
_type =
"heap";
326 policy->
_data = heap_data;
RemovalPolicy * REMOVALPOLICYCREATE(wordlist *args)
std::queue< StoreEntry * > locked_entries
const StoreEntry *(* Next)(RemovalPolicyWalker *walker)
void(* Done)(RemovalPolicyWalker *walker)
void(* Free)(RemovalPolicy *policy)
void(* Referenced)(RemovalPolicy *policy, const StoreEntry *entry, RemovalPolicyNode *node)
void(* Add)(RemovalPolicy *policy, StoreEntry *entry, RemovalPolicyNode *node)
RemovalPurgeWalker *(* PurgeInit)(RemovalPolicy *policy, int max_scan)
void(* Dereferenced)(RemovalPolicy *policy, const StoreEntry *entry, RemovalPolicyNode *node)
void(* Remove)(RemovalPolicy *policy, StoreEntry *entry, RemovalPolicyNode *node)
RemovalPolicyWalker *(* WalkInit)(RemovalPolicy *policy)
void(* Done)(RemovalPurgeWalker *walker)
StoreEntry *(* Next)(RemovalPurgeWalker *walker)
int unlock(const char *context)
void lock(const char *context)
#define debugs(SECTION, LEVEL, CONTENT)
#define EBIT_TEST(flag, bit)
void fatal(const char *message)
SQUIDCEXTERN heap_t heap_peep(heap *, int n)
SQUIDCEXTERN heap_t heap_update(heap *, heap_node *elm, heap_t dat)
SQUIDCEXTERN heap_t heap_delete(heap *, heap_node *elm)
SQUIDCEXTERN heap_key heap_peepminkey(heap *)
SQUIDCEXTERN heap_node * heap_insert(heap *hp, heap_t dat)
SQUIDCEXTERN heap * new_heap(int init_size, heap_key_func gen_key)
heap_key heap_key_func(heap_t, heap_key)
SQUIDCEXTERN heap_t heap_extractmin(heap *)
heap_key HeapKeyGen_StoreEntry_LRU(void *entry, double heap_age)
heap_key HeapKeyGen_StoreEntry_LFUDA(void *entry, double heap_age)
heap_key HeapKeyGen_StoreEntry_GDSF(void *entry, double heap_age)
static void heap_purgeDone(RemovalPurgeWalker *walker)
static RemovalPolicyWalker * heap_walkInit(RemovalPolicy *policy)
static const StoreEntry * heap_walkNext(RemovalPolicyWalker *walker)
static void heap_referenced(RemovalPolicy *policy, const StoreEntry *entry, RemovalPolicyNode *node)
static enum HeapPolicyData::heap_entry_type heap_guessType(StoreEntry *entry, RemovalPolicyNode *node)
static RemovalPurgeWalker * heap_purgeInit(RemovalPolicy *policy, int max_scan)
static void heap_add(RemovalPolicy *policy, StoreEntry *entry, RemovalPolicyNode *node)
static void heap_free(RemovalPolicy *policy)
static void heap_remove(RemovalPolicy *policy, StoreEntry *, RemovalPolicyNode *node)
static int nr_heap_policies
static void heap_walkDone(RemovalPolicyWalker *walker)
REMOVALPOLICYCREATE createRemovalPolicy_heap
static StoreEntry * heap_purgeNext(RemovalPurgeWalker *walker)
enum HeapPolicyData::heap_entry_type type
void setPolicyNode(StoreEntry *, void *) const
void * xcalloc(size_t n, size_t sz)