Rev 4559 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4559 | Rev 5270 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | * Copyright (C) 1993 Linus Torvalds |
5 | * Copyright (C) 1993 Linus Torvalds |
6 | * |
6 | * |
7 | * Delay routines, using a pre-computed "loops_per_jiffy" value. |
7 | * Delay routines, using a pre-computed "loops_per_jiffy" value. |
8 | */ |
8 | */ |
Line -... | Line 9... | ||
- | 9 | ||
- | 10 | #include |
|
- | 11 | ||
- | 12 | extern unsigned long loops_per_jiffy; |
|
- | 13 | ||
- | 14 | #include |
|
- | 15 | ||
- | 16 | /* |
|
- | 17 | * Using udelay() for intervals greater than a few milliseconds can |
|
- | 18 | * risk overflow for high loops_per_jiffy (high bogomips) machines. The |
|
- | 19 | * mdelay() provides a wrapper to prevent this. For delays greater |
|
- | 20 | * than MAX_UDELAY_MS milliseconds, the wrapper is used. Architecture |
|
- | 21 | * specific values can be defined in asm-???/delay.h as an override. |
|
- | 22 | * The 2nd mdelay() definition ensures GCC will optimize away the |
|
- | 23 | * while loop for the common cases where n <= MAX_UDELAY_MS -- Paul G. |
|
- | 24 | */ |
|
- | 25 | ||
- | 26 | #ifndef MAX_UDELAY_MS |
|
- | 27 | #define MAX_UDELAY_MS 5 |
|
- | 28 | #endif |
|
- | 29 | ||
- | 30 | #ifndef mdelay |
|
- | 31 | #define mdelay(n) (\ |
|
- | 32 | (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \ |
|
- | 33 | ({unsigned long __ms=(n); while (__ms--) udelay(1000);})) |
|
- | 34 | #endif |
|
- | 35 | ||
- | 36 | #ifndef ndelay |
|
- | 37 | static inline void ndelay(unsigned long x) |
|
- | 38 | { |
|
- | 39 | udelay(DIV_ROUND_UP(x, 1000)); |
|
9 | 40 | } |
|
- | 41 | #define ndelay(x) ndelay(x) |
|
- | 42 | #endif |
|
- | 43 | ||
- | 44 | extern unsigned long lpj_fine; |
|
- | 45 | void calibrate_delay(void); |
|
- | 46 | void msleep(unsigned int msecs); |
|
- | 47 | unsigned long msleep_interruptible(unsigned int msecs); |
|
- | 48 | void usleep_range(unsigned long min, unsigned long max); |
|
- | 49 | ||
- | 50 | static inline void ssleep(unsigned int seconds) |
|
- | 51 | { |
|
- | 52 | msleep(seconds * 1000); |
|
Line 10... | Line 53... | ||
10 | #define usleep_range(min, max) udelay(max) |
53 | } |