MCPcopy Create free account
hub / github.com/1a1a11a/libCacheSim / SFIFO_init

Function SFIFO_init

libCacheSim/cache/eviction/fifo/SFIFO.c:119–164  ·  view source on GitHub ↗

* @brief initialize a SFIFO cache * * @param ccache_params some common cache parameters * @param cache_specific_params SFIFO specific parameters, e.g., "n-seg=4" */

Source from the content-addressed store, hash-verified

117 * @param cache_specific_params SFIFO specific parameters, e.g., "n-seg=4"
118 */
119cache_t *SFIFO_init(const common_cache_params_t ccache_params,
120 const char *cache_specific_params) {
121 cache_t *cache = cache_struct_init("SFIFO", ccache_params, cache_specific_params);
122 cache->cache_init = SFIFO_init;
123 cache->cache_free = SFIFO_free;
124 cache->get = SFIFO_get;
125 cache->find = SFIFO_find;
126 cache->insert = SFIFO_insert;
127 cache->evict = SFIFO_evict;
128 cache->remove = SFIFO_remove;
129 cache->to_evict = SFIFO_to_evict;
130 cache->get_occupied_byte = cache_get_occupied_byte_default;
131 cache->get_n_obj = cache_get_n_obj_default;
132 cache->can_insert = SFIFO_can_insert;
133
134 if (ccache_params.consider_obj_metadata) {
135 cache->obj_md_size = 8 * 2;
136 } else {
137 cache->obj_md_size = 0;
138 }
139
140 cache->eviction_params = (SFIFO_params_t *)malloc(sizeof(SFIFO_params_t));
141 SFIFO_params_t *params = (SFIFO_params_t *)(cache->eviction_params);
142 params->n_seg = 4;
143
144 if (cache_specific_params != NULL) {
145 SFIFO_parse_params(cache, cache_specific_params);
146 }
147
148 params->per_seg_max_size = ccache_params.cache_size / params->n_seg;
149 params->fifo_heads =
150 (cache_obj_t **)malloc(sizeof(cache_obj_t *) * params->n_seg);
151 params->fifo_tails =
152 (cache_obj_t **)malloc(sizeof(cache_obj_t *) * params->n_seg);
153 params->fifo_n_objs = (int64_t *)malloc(sizeof(int64_t) * params->n_seg);
154 params->fifo_n_bytes = (int64_t *)malloc(sizeof(int64_t) * params->n_seg);
155
156 for (int i = 0; i < params->n_seg; i++) {
157 params->fifo_heads[i] = NULL;
158 params->fifo_tails[i] = NULL;
159 params->fifo_n_objs[i] = 0;
160 params->fifo_n_bytes[i] = 0;
161 }
162
163 return cache;
164}
165
166/**
167 * @brief this function is the user facing API

Callers 1

create_cacheFunction · 0.85

Calls 2

cache_struct_initFunction · 0.85
SFIFO_parse_paramsFunction · 0.85

Tested by

no test coverage detected