- 论坛徽章:
- 0
|
Hello,
we use the following to solve the problem of jiffies wraparound.
#define time_after(a,b) \
(typecheck(unsigned long, a) && \
typecheck(unsigned long, b) && \
((long)(b) - (long)(a) < 0))
#define time_before(a,b) time_after(b,a)
#define time_after_eq(a,b) \
(typecheck(unsigned long, a) && \
typecheck(unsigned long, b) && \
((long)(a) - (long)(b) >= 0))
#define time_before_eq(a,b) time_after_eq(b,a)
But I cannot understand it has some differences comparing with the
following code.
/* code 2*/
unsigned long timeout = jiffies + HZ/2;
if(timeout < jiffies)
{
/* not timeout...*/
}
else
{
/* timeout processing...*/
}
questions:
1.why the macros of time_after can solve the jiffies wraparound problem?
2.Is there any other possibilities for the "code 2" to overflow
except the jiffies overflow?
Any help will be preferred .
Thank you, |
|