/* * Inserts the entry into the pre_cache or the cache. Ensures the cache * block is marked as allocated if necc. Inserts into the hash table. * Sets the tick which records when the entry was last moved about. */ static void push(struct mq_policy *mq, struct entry *e) { e->tick = mq->tick; hash_insert(mq, e); if (in_cache(mq, e)) queue_push(e->dirty ? &mq->cache_dirty : &mq->cache_clean, queue_level(e), &e->list); else queue_push(&mq->pre_cache, queue_level(e), &e->list); }
/* * Inserts the entry into the pre_cache or the cache. Ensures the cache * block is marked as allocated if necc. Inserts into the hash table. Sets the * tick which records when the entry was last moved about. */ static void push(struct mq_policy *mq, struct entry *e) { e->tick = mq->tick; hash_insert(mq, e); if (e->in_cache) { alloc_cblock(mq, e->cblock); queue_push(&mq->cache, queue_level(e), &e->list); } else queue_push(&mq->pre_cache, queue_level(e), &e->list); }