timer problem
Mulyadi Santosa
mulyadi.santosa at gmail.com
Thu Jul 7 03:01:42 EDT 2011
On Thu, Jul 7, 2011 at 13:58, Vishal Thanki <vishalthanki at gmail.com> wrote:
> On Thu, Jul 7, 2011 at 12:19 PM, Mulyadi Santosa
> <mulyadi.santosa at gmail.com> wrote:
>> Hi..
>>
>> Trying to add another perspective, feel free to take or not :)
>>
>> On Wed, Jul 6, 2011 at 23:52, Prashant Shah <pshah.mumbai at gmail.com> wrote:
>>>
>>> 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?
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
More information about the Kernelnewbies
mailing list