timer problem
From: Mulyadi Santosa <hidden>
Date: 2011-07-07 07:01:42
On Thu, Jul 7, 2011 at 13:58, Vishal Thanki [off-list ref] wrote:
On Thu, Jul 7, 2011 at 12:19 PM, Mulyadi Santosa [off-list ref] wrote:quoted
Hi.. Trying to add another perspective, feel free to take or not ?:) On Wed, Jul 6, 2011 at 23:52, Prashant Shah [off-list ref] wrote:quoted
void timfunc(unsigned long data) { ? ? ? ?printk("hi this is a timer %lu\n", data); ? ? ? ?set_current_state(TASK_INTERRUPTIBLE); ? ? ? ?schedule_timeout(10 * HZ); ? ? ? ?printk("hi again this is a timer after timeout %lu\n", data); } static int __init init_testmod(void) { ? ? ? ?init_timer(&tim); ? ? ? ?tim.expires = jiffies + HZ*5; ? ? ? ?tim.data = 1000; ? ? ? ?tim.function = timfunc; ? ? ? ?add_timer(&tim); ? ? ? ?return 0; }If my brain still works correctly, then I think the core of the problem is that you're doing schedule() inside timer function. The thing is, timer function is running in bottom halves...or in other word, you are not supposed to do that in interrupt-handler alike function. What you need to do in order to wake up ten minutes later (10*HZ) is10*HZ is for 10 mins or for 10 seconds?
whoops sorry, it should be 10*HZ=10 seconds...thanks for noticing the error :) -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com