Lines Matching defs:cache

26 #include "private-lib-misc-cache-ttl.h"
33 update_sul(lws_cache_ttl_lru_t_heap_t *cache);
54 _lws_cache_heap_item_destroy(lws_cache_ttl_lru_t_heap_t *cache,
57 lwsl_cache("%s: %s (%s)\n", __func__, cache->cache.info.name,
63 cache->cache.current_footprint -= item->size;
65 update_sul(cache);
67 if (cache->cache.info.cb)
68 cache->cache.info.cb((void *)((uint8_t *)&item[1]), item->size);
74 lws_cache_heap_item_destroy(lws_cache_ttl_lru_t_heap_t *cache,
77 struct lws_cache_ttl_lru *backing = &cache->cache;
98 cache->items_lru.head) {
129 _lws_cache_heap_item_destroy(cache, i);
149 _lws_cache_heap_item_destroy(cache, item);
153 lws_cache_item_evict_lru(lws_cache_ttl_lru_t_heap_t *cache)
157 if (!cache->items_lru.head)
160 ei = lws_container_of(cache->items_lru.head,
163 lws_cache_heap_item_destroy(cache, ei, 0);
173 lws_cache_ttl_lru_t_heap_t *cache = lws_container_of(sul,
174 lws_cache_ttl_lru_t_heap_t, cache.sul);
177 lwsl_cache("%s: %s\n", __func__, cache->cache.info.name);
179 while (cache->items_expiry.head) {
182 item = lws_container_of(cache->items_expiry.head,
188 lws_cache_heap_item_destroy(cache, item, 1);
197 earliest_expiry(lws_cache_ttl_lru_t_heap_t *cache, lws_usec_t *pearliest)
201 if (!cache->items_expiry.head)
204 item = lws_container_of(cache->items_expiry.head,
213 update_sul(lws_cache_ttl_lru_t_heap_t *cache)
218 expiry_cb(&cache->cache.sul);
221 if (earliest_expiry(cache, &earliest)) {
222 lws_sul_cancel(&cache->cache.sul);
230 lws_cache_schedule(&cache->cache, expiry_cb, earliest);
234 lws_cache_heap_specific(lws_cache_ttl_lru_t_heap_t *cache,
237 lws_start_foreach_dll(struct lws_dll2 *, d, cache->items_lru.head) {
252 lws_cache_heap_tag_match(struct lws_cache_ttl_lru *cache, const char *wc,
262 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
265 lws_start_foreach_dll(struct lws_dll2 *, d, cache->items_lru.head) {
279 * cache level
326 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
344 cache->items_lru.head) {
360 _lws_cache_heap_item_destroy(cache, i);
371 while ((cache->cache.info.max_footprint &&
372 cache->cache.current_footprint + size >
373 cache->cache.info.max_footprint) ||
374 (cache->cache.info.max_items &&
375 cache->items_lru.count + 1 > cache->cache.info.max_items))
376 lws_cache_item_evict_lru(cache);
380 lws_cache_heap_invalidate(&cache->cache, specific_key);
387 cache->cache.current_footprint += item->size;
409 lws_dll2_add_sorted(&item->list_expiry, &cache->items_expiry,
411 ei = lws_container_of(cache->items_expiry.head,
415 lws_cache_schedule(&cache->cache, expiry_cb, ei->expiry);
419 lws_dll2_add_head(&item->list_lru, &cache->items_lru);
428 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
431 item = lws_cache_heap_specific(cache, specific_key);
437 lws_dll2_add_head(&item->list_lru, &cache->items_lru);
450 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
469 cache->items_lru.head) {
486 _lws_cache_heap_item_destroy(cache, i);
491 lws_cache_heap_item_destroy(cache, item, 0);
499 lws_cache_ttl_lru_t_heap_t *cache;
504 cache = lws_fi(&info->cx->fic, "cache_createfail") ? NULL :
505 lws_zalloc(sizeof(*cache), __func__);
506 if (!cache)
509 cache->cache.info = *info;
511 info->parent->child = &cache->cache;
515 return (struct lws_cache_ttl_lru *)cache;
522 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
526 lws_cache_heap_item_destroy(cache, item, 0);
534 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
536 lws_dll2_foreach_safe(&cache->items_lru, cache, destroy_dll);
545 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)c;
547 if (!cache)
552 lws_dll2_foreach_safe(&cache->items_lru, cache, destroy_dll);
576 lws_cache_ttl_lru_t_heap_t *cache = (lws_cache_ttl_lru_t_heap_t *)_c;
580 lws_dll2_t *d = cache->items_expiry.head;
587 cache->cache.info.name, (int)cache->items_lru.count,
591 lws_dll2_foreach_safe(&cache->items_lru, cache, dump_dll);