Ejemplo n.º 1
0
/*! 
 * \ingroup cache_interface
 *
 * Cette fonction invalide le cache, c'est-à -dire le vide de son contenu.
 * 
 * On synchronise le cache puis tous les blocs sont marqués invalides
 * (RAZ du flag \c VALID). C'est comme si le cache devenait vide. On invalide
 * aussi la stratégie.
 *
 * \param pcache un pointeur sur le cache à synchroniser
 * \return le code d'erreur
 */
Cache_Error Cache_Invalidate(struct Cache *pcache)
{
    int ib;
    int rcode;

    /* Synchronisation du cache */
    if ((rcode = Cache_Sync(pcache)) != CACHE_OK) return rcode;

    /* Tous les blocs deviennent invalides */
    for (ib = 0; ib < pcache->nblocks; ib++)
    {
	struct Cache_Block_Header *pbh = &pcache->headers[ib];

	pbh->flags &= ~VALID; 
    }

    /* Initialisation du pointeur sur le premier bloc libre, cad ici le premier
     * bloc */
    pcache->pfree = pcache->headers;

    /* La stratégie a peut-être quelque chose à faire */
    Strategy_Invalidate(pcache);

    return CACHE_OK;
}
Ejemplo n.º 2
0
//! Invalidation du cache.
Cache_Error Cache_Invalidate(struct Cache *pcache)
{	
	for(struct Cache_Block_Header *h = pcache->headers; h < (pcache->headers + pcache->nblocks); h++)
		h->flags &= ~VALID;

	Strategy_Invalidate(pcache);
	
	return CACHE_OK;
}
Ejemplo n.º 3
0
/**
*Invalide le cache, c’est-à-dire met à 0 le bit V de tous les blocs. C’est donc comme si
*le cache était vide : aucun bloc ne contient plus d’information utile.
**/
Cache_Error Cache_Invalidate(struct Cache *pcache){
	for(int i=0; i<pcache->nblocks; i++){
		pcache->headers[i].flags &= ~VALID;
	}

	pcache->pfree =Get_Free_Block(cache);
	Strategy_Invalidate(pcache);
	return CACHE_OK;
}