linux kernal 2.6中内存管理中的一点疑问解决办法

linux kernal 2.6中内存管理中的一点疑问
最近正在看linux2.6内存管理部分的源码,看到setup_cpu_cache时,觉得非常的晦涩,特别是下面index_of函数,让我不知所云,不知哪位大牛能给我稍微解释一下,或者给我一个关于这一部分比较详细的注释。不甚感激。
我的邮箱xiahui1982@gmail.com

附:index_of源码

static   __always_inline   int   index_of(const   size_t   size)

{

extern   void   __bad_size(void);

if   (__builtin_constant_p(size))   {

int   i   =   0;

#define   CACHE(x)   \

if   (size   <=x)   \

return   i;   \

else   \

i++;

#include   "linux/kmalloc_sizes.h "

#undef   CACHE

__bad_size();

}   else

__bad_size();

return   0;

}


厉害呀,
我也学习一下,


这段代码看起来很简单, 只不过没有上下文, 也不好解释.
楼主有没有上下文的代码?


有一个元素size的数组,linux/kmalloc_sizes.h中定义了数组中的各size元素的值,而index_of(size)则返回某一size在这个数组中的索引。比如小于32的size返回0,32 <size <64返回1,..依次类推.新鲜的是kmalloc_sizes.h中并未按通常方法定义数组,这是因为有一些例外情况(#if …#endif)以及为节省内存空间考虑。


up

linux kernal 2.6中内存管理中的一点疑问解决办法

相关文章:

你感兴趣的文章:

标签云: