Lines Matching refs:cache

45     PageCache *cache;  in cache_init()  local
61 cache = g_try_malloc(sizeof(*cache)); in cache_init()
62 if (!cache) { in cache_init()
66 cache->page_size = page_size; in cache_init()
67 cache->num_items = 0; in cache_init()
68 cache->max_num_items = num_pages; in cache_init()
70 trace_migration_pagecache_init(cache->max_num_items); in cache_init()
73 cache->page_cache = g_try_malloc((cache->max_num_items) * in cache_init()
74 sizeof(*cache->page_cache)); in cache_init()
75 if (!cache->page_cache) { in cache_init()
77 g_free(cache); in cache_init()
81 for (i = 0; i < cache->max_num_items; i++) { in cache_init()
82 cache->page_cache[i].it_data = NULL; in cache_init()
83 cache->page_cache[i].it_age = 0; in cache_init()
84 cache->page_cache[i].it_addr = -1; in cache_init()
87 return cache; in cache_init()
90 void cache_fini(PageCache *cache) in cache_fini() argument
94 g_assert(cache); in cache_fini()
95 g_assert(cache->page_cache); in cache_fini()
97 for (i = 0; i < cache->max_num_items; i++) { in cache_fini()
98 g_free(cache->page_cache[i].it_data); in cache_fini()
101 g_free(cache->page_cache); in cache_fini()
102 cache->page_cache = NULL; in cache_fini()
103 g_free(cache); in cache_fini()
106 static size_t cache_get_cache_pos(const PageCache *cache, in cache_get_cache_pos() argument
109 g_assert(cache->max_num_items); in cache_get_cache_pos()
110 return (address / cache->page_size) & (cache->max_num_items - 1); in cache_get_cache_pos()
113 static CacheItem *cache_get_by_addr(const PageCache *cache, uint64_t addr) in cache_get_by_addr() argument
117 g_assert(cache); in cache_get_by_addr()
118 g_assert(cache->page_cache); in cache_get_by_addr()
120 pos = cache_get_cache_pos(cache, addr); in cache_get_by_addr()
122 return &cache->page_cache[pos]; in cache_get_by_addr()
125 uint8_t *get_cached_data(const PageCache *cache, uint64_t addr) in get_cached_data() argument
127 return cache_get_by_addr(cache, addr)->it_data; in get_cached_data()
130 bool cache_is_cached(const PageCache *cache, uint64_t addr, in cache_is_cached() argument
135 it = cache_get_by_addr(cache, addr); in cache_is_cached()
145 int cache_insert(PageCache *cache, uint64_t addr, const uint8_t *pdata, in cache_insert() argument
152 it = cache_get_by_addr(cache, addr); in cache_insert()
161 it->it_data = g_try_malloc(cache->page_size); in cache_insert()
166 cache->num_items++; in cache_insert()
169 memcpy(it->it_data, pdata, cache->page_size); in cache_insert()