学习的时候,介绍说time_after可以解决jiff value回环的问题,但怎么看,该函数都不能彻底解决啊。
time_after定义:#define time_after(a, b) (((long)b - (long)a) < 0)
假设b =3, a = 2,那么说a after b呢?还是b after a呢?从逻辑上就满足不了。
后来在bing上,搜索来很久,终于找到下面的链接,有人提了一个和我一样的问题。最后结论是,我的这个疑问是对的。linux kernel 也承认这个issue,但kernel代码确定,不会这么用,也就是不存在如此大差值的时间使用。
有时候,我总是觉得linux之类的东西时完美的,导致自己三观尽毁。怀疑精神不够啊。
http://stackoverflow.com/questions/6234597/is-the-time-after-linux-macro-100-fool-proof-regarding-the-wrap-around-of-jif