Re: jiffies doesn't increase while doing mdelay() ?

From: Arjan van de Ven
Date: Thu Mar 30 2006 - 08:20:55 EST


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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/