QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1584|回复: 0

[请教]2.6核中jiffies回绕问题

[复制链接]
发表于 2005-12-29 12:46:37 | 显示全部楼层 |阅读模式
在读《linux kernal develop》关于jiffies的回绕时看到:
unsigned long timeout=jiffies+Hz/2;
/*执行一段任务,然后查看是否花的时间太长*/
if(timeout<jiffies){
/*没有超时*/
}else{
          /*超时了*/
}
这段代码在回绕发生时会出问题,这是可以理解的
然后书上说通过几个宏就能避免回绕产生的错误,例如:
#define time_after(unknown,known) ((long)(known)-(long)(unknown)<0)
unsinged timeout=jiffies+Hz2;
         /*....*/
if(time_after(jiffies,timeout)){
          /*没有超时*/
}else{
           /*超时了*/
}
不能理解为什么用宏就能避免第一个程序的问题呢,他们又什么不同?难道是跟宏是在预编译阶段展开有关吗?请高手指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-6-26 12:32 , Processed in 0.125802 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表