git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
include
/
linux
/
delay.h
diff --git
a/include/linux/delay.h
b/include/linux/delay.h
index
acb7486
..
d5f0f01
100644
(file)
--- a/
include/linux/delay.h
+++ b/
include/linux/delay.h
@@
-10,6
+10,7
@@
extern unsigned long loops_per_jiffy;
#include <asm/delay.h>
extern unsigned long loops_per_jiffy;
#include <asm/delay.h>
+#include <linux/hardirq.h>
/*
* Using udelay() for intervals greater than a few milliseconds can
/*
* 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
#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
#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)
#ifndef ndelay
#define ndelay(x) udelay(((x)+999)/1000)