2006-03-30 05:52:06

by James Yu

[permalink] [raw]
Subject: jiffies doesn't increase while doing mdelay() ?

Dear all,

I am doing the following in a kernel thread :

===== code segment=====
prink("before mdelay:%d, ", jiffies);
mdelay(300); // delay 300ms
printk("after mdelay:%d\n", jiffies);
===== code segment=====

However, jiffies before and after doing mdelay are the same!!!
Can someone please explain why jiffies doesn't change ?

Cheers,
--
James
[email protected]


2006-03-30 13:23:56

by Arjan van de Ven

[permalink] [raw]
Subject: Re: jiffies doesn't increase while doing mdelay() ?

On Thu, 2006-03-30 at 13:52 +0800, James Yu wrote:
> Dear all,
>
> I am doing the following in a kernel thread :
>
> ===== code segment=====
> prink("before mdelay:%d, ", jiffies);
> mdelay(300); // delay 300ms
> printk("after mdelay:%d\n", jiffies);
> ===== code segment=====
>
> However, jiffies before and after doing mdelay are the same!!!
> Can someone please explain why jiffies doesn't change ?

first of all you should use msleep() not mdelay() for such long
delays...
second if you have interrupts disables (for example via
spin_lock_irqsave) this is normal (and the reason why your code is
evil): The timer interrupt that normally increments jiffies can't happen
because you disabled it..