timer problem

Vishal Thanki vishalthanki at gmail.com
Thu Jul 7 02:58:36 EDT 2011


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?

> 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
>



More information about the Kernelnewbies mailing list