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);
}