@@ -25,6 +25,8 @@ typedef struct LRU_Prob_params {
2525 int threshold ;
2626} LRU_Prob_params_t ;
2727
28+ static const char * DEFAULT_CACHE_PARAMS = "prob=0.5" ;
29+
2830// ***********************************************************************
2931// **** ****
3032// **** function declarations ****
@@ -77,8 +79,10 @@ cache_t *LRU_Prob_init(const common_cache_params_t ccache_params,
7779 cache -> eviction_params =
7880 (LRU_Prob_params_t * )malloc (sizeof (LRU_Prob_params_t ));
7981 LRU_Prob_params_t * params = (LRU_Prob_params_t * )(cache -> eviction_params );
80- params -> prob = 0.5 ;
82+ params -> q_head = NULL ;
83+ params -> q_tail = NULL ;
8184
85+ LRU_Prob_parse_params (cache , DEFAULT_CACHE_PARAMS );
8286 if (cache_specific_params != NULL ) {
8387 LRU_Prob_parse_params (cache , cache_specific_params );
8488 }
@@ -169,6 +173,7 @@ static cache_obj_t *LRU_Prob_find(cache_t *cache, const request_t *req,
169173 */
170174static cache_obj_t * LRU_Prob_insert (cache_t * cache , const request_t * req ) {
171175 LRU_Prob_params_t * params = (LRU_Prob_params_t * )cache -> eviction_params ;
176+
172177 cache_obj_t * obj = cache_insert_base (cache , req );
173178 prepend_obj_to_head (& params -> q_head , & params -> q_tail , obj );
174179
@@ -203,6 +208,8 @@ static cache_obj_t *LRU_Prob_to_evict(cache_t *cache, const request_t *req) {
203208static void LRU_Prob_evict (cache_t * cache , const request_t * req ) {
204209 LRU_Prob_params_t * params = (LRU_Prob_params_t * )cache -> eviction_params ;
205210 cache_obj_t * obj_to_evict = params -> q_tail ;
211+ DEBUG_ASSERT (params -> q_tail != NULL );
212+
206213 remove_obj_from_list (& params -> q_head , & params -> q_tail , obj_to_evict );
207214 cache_remove_obj_base (cache , obj_to_evict , true);
208215}
0 commit comments