Linuxメモリ管理のslabメカニズム(cacheの破棄)

824 ワード

Cacheの破棄は簡単で、ローカルCPU cache、共有cache、3チェーン、cache自体を順次チェックして解放します.cacheの作成から見ると、作成されたcacheは主にcache_からcacheで得られたのはcache_Cacheのオブジェクトのサイズはcache構造体のサイズなので、ここではcache_に解放されるだけです.CacheでOKです.
static void __kmem_cache_destroy(struct kmem_cache *cachep)
{
	int i;
	struct kmem_list3 *l3;
	/*     cpu local cache   struct array_cache  
	,     online cpu, cpu   down 
       ,      */
	for_each_online_cpu(i)
	    kfree(cachep->array[i]);

	/* NUMA: free the list3 structures */
	for_each_online_node(i) {/*        */
		l3 = cachep->nodelists[i];
		if (l3) {
			/*   shared local cache   struct array_cache   */
			kfree(l3->shared);
			free_alien_cache(l3->alien);
			kfree(l3);/*    */
		}
	}
	/*  cache,   cache cache_cache    ,        
	  */
	kmem_cache_free(&cache_cache, cachep);
}