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