Thread (7 messages) 7 messages, 4 authors, 2011-07-10

timer problem

From: Vishal Thanki <hidden>
Date: 2011-07-07 06:58:36

On Thu, Jul 7, 2011 at 12:19 PM, Mulyadi Santosa
[off-list ref] wrote:
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) is
10*HZ is for 10 mins or for 10 seconds?
to reinsert the function and make it expire 10*HZ later.

Just my 2 cents :)


--
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help