关于linux内核timer run_timer_list的一个边界问题?

a707000646 2015-06-06 12:06:45
首先请看timer中的部分代码(假设你熟悉timer的源码)

在计时器第一次启动的时候run_timer_list中的
if (!tv1.index) {
int n = 1;
do {
cascade_timers(tvecs[n]);
} while (tvecs[n]->index == 1 && ++n < NOOF_TVECS);
}
这段代码是吧后面的计时器补充到 即将要发生的256个滴答的队列中去,但是我有个问题是,当计时器第一次启动的时候,由于tv1初始化的时候index是0,因此这个语句一定会执行cascade_timers,所以tv2-tv5中的index都会+1,而timer_jiffies刚开始启动的时候是0,所以在重新分配 tv2-tv5.vec[0]的时候里面的计时器其实没有变动的,但是index都加1了,这样做不是会导致下标为0的计时器全部延迟了吗?
...全文
163 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧