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