Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1042689
  • 博文数量: 277
  • 博客积分: 8313
  • 博客等级: 中将
  • 技术积分: 2976
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-22 11:25
文章分类

全部博文(277)

文章存档

2013年(17)

2012年(66)

2011年(104)

2010年(90)

我的朋友

分类: LINUX

2012-06-12 09:38:03

cache的销毁很简单,依次检查和释放本地CPU cache、共享cache、三链以及cache本身。从cache的创建我们看到,创建的cache主要是从cache_cache中获得的,因为cache_cache中对象的大小就是cache结构体的大小,所以这里只是释放到cache_cacheOK了。

[cpp] view plaincopyprint?

1.     static void __kmem_cache_destroy(struct kmem_cache *cachep)  

2.     {  

3.         int i;  

4.         struct kmem_list3 *l3;  

5.         /* 释放每个cpu local cache使用的struct array_cache对象 

6.         ,注意此时是online cpu cpu如果是down 

7.           态,并没有释放 */  

8.         for_each_online_cpu(i)  

9.             kfree(cachep->array[i]);  

10.    

11.      /* NUMA: free the list3 structures */  

12.      for_each_online_node(i) {/*对每个在线的节点*/  

13.          l3 = cachep->nodelists[i];  

14.          if (l3) {  

15.              /* 释放shared local cache使用的struct array_cache对象 */  

16.              kfree(l3->shared);  

17.              free_alien_cache(l3->alien);  

18.              kfree(l3);/*释放三链*/  

19.          }  

20.      }  

21.      /*释放cache,因为该cachecache_cache中的对象,所以调用对象释放 

22.      函数*/  

23.      kmem_cache_free(&cache_cache, cachep);  

24.  }  

 

阅读(904) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~