Rev 4559 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3120 | serge | 1 | #ifndef _LINUX_DELAY_H |
2 | #define _LINUX_DELAY_H |
||
3 | |||
4 | /* |
||
5 | * Copyright (C) 1993 Linus Torvalds |
||
6 | * |
||
7 | * Delay routines, using a pre-computed "loops_per_jiffy" value. |
||
8 | */ |
||
4559 | Serge | 9 | |
5270 | serge | 10 | #include |
4559 | Serge | 11 | |
5270 | serge | 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)); |
||
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); |
||
53 | } |
||
54 | |||
3120 | serge | 55 | #endif /* defined(_LINUX_DELAY_H) */=MAX_UDELAY_MS)>=> |