wszk 发表于 2005-12-29 12:46:37

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

在读《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{
         /*超时了*/
}
不能理解为什么用宏就能避免第一个程序的问题呢,他们又什么不同?难道是跟宏是在预编译阶段展开有关吗?请高手指教
页: [1]
查看完整版本: [请教]2.6核中jiffies回绕问题