X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fdelay.h;h=d5f0f010a95d2720411f0aa06e0f648be09cc914;hb=refs%2Fheads%2Fvserver;hp=acb74865b9732faef3e0b23d6933b09fe97be6bd;hpb=76828883507a47dae78837ab5dec5a5b4513c667;p=linux-2.6.git diff --git a/include/linux/delay.h b/include/linux/delay.h index acb74865b..d5f0f010a 100644 --- a/include/linux/delay.h +++ b/include/linux/delay.h @@ -10,6 +10,7 @@ extern unsigned long loops_per_jiffy; #include +#include /* * Using udelay() for intervals greater than a few milliseconds can @@ -25,14 +26,21 @@ extern unsigned long loops_per_jiffy; #define MAX_UDELAY_MS 5 #endif -#ifdef notdef -#define mdelay(n) (\ - {unsigned long __ms=(n); while (__ms--) udelay(1000);}) +#ifndef mdelay +#ifdef CONFIG_DEBUG_SLEEP_IN_IRQ +#define mdelay(n) ( \ +{ \ + static int warned=0; \ + unsigned long __ms=(n); \ + WARN_ON(in_irq() && !(warned++)); \ + while (__ms--) udelay(1000); \ +}) #else #define mdelay(n) (\ (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \ ({unsigned long __ms=(n); while (__ms--) udelay(1000);})) #endif +#endif #ifndef ndelay #define ndelay(x) udelay(((x)+999)/1000)