读书人

linux kernal 2.6中内存管理中的一点疑

发布时间: 2012-03-07 09:13:51 作者: rapoo

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

读书人网 >UNIXLINUX

热点推荐