2008年8月12日 星期二

HZ & jiffies

HZ是用來定義每一秒有幾次timer interrupts(time tick)

jiffies:
the number of time ticks since kernel start

ex:
unsigned long timeout=jiffies+ 3*HZ;
//  the time after 3 second
time_after(jiffies, timeout)

convert from jiffies to seconds
divide by HZ

time related methods:
time_after:  parameter is time tick 
time_before: parameter is time tick
schedule_timeout: parameter is time tick  
only schedule_timeout will give up processor

wait_event_timeout:
msleep: parameter is milliseconds

timer example( do something in the future):
#include

struct timer_list my_timer;

init_timer(&my_timer);            /* Also see setup_timer() */
my_timer.expire = jiffies + n*HZ; /* n is the timeout in number
                                     of seconds */
my_timer.function = timer_func;   /* Function to execute
                                     after n seconds */
my_timer.data = func_parameter;   /* Parameter to be passed
                                     to timer_func */
add_timer(&my_timer);             /* Start the timer */

沒有留言: