简单的代码,却不明所以---profile_hit请教!
void profile_hit(int type, void *__pc){
unsigned long pc;
if (prof_on != type || !prof_buffer)
return;
pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift;
atomic_inc(&prof_buffer);
}
profile用于优化代码,辅助识别"hot spots",但是这个函数实现何功能,哪位大虾可以解释一下!谢谢, 这个函数是在阅读LINUX2.6.16的主调度函数schedule时碰到的,相信各位也会碰到.
不清楚是否真的有很多人在学内核,
但是为什么肯定会碰到的问题就是没人知道,
郁闷...
不清楚有多少人是否真的读过源码.
但是为什么这么显眼的问题,竟没人了解,
郁闷...
LINUX内核阅读----
不懂这个,说明你没看懂内核! 2.6的核心没有研究过,不过大概的意思能看懂
如果类型不是type或者没有设置prof_len(也就是0的话)直接退出
否则根据prof_shift(启动时设置的参数)计算pc(其实是prof_buffer数组的索引)
最后在prof_len和pc中取的最小值,也就是索引prof_buffer的地址!
atomic_inc没有研究过! 谢谢gotop167的耐心分析!
页:
[1]