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

Function ClockPro_run_test

libCacheSim/cache/eviction/ClockPro.c:316–347  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

314}
315
316static void ClockPro_run_test(cache_t *cache) {
317 ClockPro_params_t *params = (ClockPro_params_t *)cache->eviction_params;
318 cache_obj_t *obj = params->hand_test;
319
320 if (obj->clockpro.status != CLOCKPRO_TEST) {
321 params->hand_test = obj->queue.next;
322 return;
323 }
324
325 params->mem_test -= obj->obj_size;
326
327 if (params->mem_cold_max > obj->obj_size) {
328 params->mem_cold_max -= obj->obj_size;
329 } else {
330 params->mem_cold_max = 0;
331 }
332
333 if (params->hand_hot == obj) {
334 params->hand_hot = obj->queue.next;
335 }
336 if (params->hand_cold == obj) {
337 params->hand_cold = obj->queue.next;
338 }
339
340 cache_obj_t *hand_test_prev = params->hand_test->queue.prev;
341 remove_obj_from_list(&params->hand_test, &hand_test_prev, obj);
342 hashtable_delete(params->ht_test, obj);
343
344 while (params->mem_cold > params->mem_cold_max) {
345 ClockPro_run_cold(cache);
346 }
347}
348
349static void ClockPro_run_cold(cache_t *cache) {
350 ClockPro_params_t *params = (ClockPro_params_t *)cache->eviction_params;

Callers 1

ClockPro_run_coldFunction · 0.85

Calls 2

remove_obj_from_listFunction · 0.85
ClockPro_run_coldFunction · 0.85

Tested by

no test coverage detected