2014-10-28 63 views
-1

如何使用jiffies中断来重置内核模块中的其他内核变量计数器。如何在每秒内核模块编程中使用重置计数器?

我正在尝试每秒重置一些计数器...只是为了检查我是否每秒达到一定的阈值。不知道如何在内核模块编程中解决这个问题。

一些解释用一个例子,将不胜感激

感谢

+1

寻找内核定时器或延迟工作.. :) – raghav3276 2014-10-28 07:11:33

回答

0

你可以做这样的事情:

unsigned long later = jiffies + 5*HZ;   /* five seconds from now */ 
if (jiffies > later) { 
counter++ 
} 

另外,我建议考虑使用一些知名的宏,作为上面的代码可能会导致溢出。

time_after(j,t) here the macro returns true if time jiffies j is after time t; otherwise, it returns false. 
time_before(j, t), 
time_after_eq(j, t), 
time_before_eq(j, t) 
+1

如果'later'溢出?你一定要使用提供的宏而不是滚动自己的宏。 – tangrs 2014-10-28 05:45:10

+0

@tangrs,正确,最初的代码只是给予和概述。它总是推荐使用提供的宏来避免溢出。 – askb 2014-10-28 09:59:29