delay.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _LINUX_DELAY_H
  2. #define _LINUX_DELAY_H
  3. /*
  4.  * Copyright (C) 1993 Linus Torvalds
  5.  *
  6.  * Delay routines, using a pre-computed "loops_per_jiffy" value.
  7.  */
  8. extern unsigned long loops_per_jiffy;
  9. #include <asm/delay.h>
  10. /*
  11.  * Using udelay() for intervals greater than a few milliseconds can
  12.  * risk overflow for high loops_per_jiffy (high bogomips) machines. The
  13.  * mdelay() provides a wrapper to prevent this.  For delays greater
  14.  * than MAX_UDELAY_MS milliseconds, the wrapper is used.  Architecture
  15.  * specific values can be defined in asm-???/delay.h as an override.
  16.  * The 2nd mdelay() definition ensures GCC will optimize away the 
  17.  * while loop for the common cases where n <= MAX_UDELAY_MS  --  Paul G.
  18.  */
  19. #ifndef MAX_UDELAY_MS
  20. #define MAX_UDELAY_MS 5
  21. #endif
  22. #ifdef notdef
  23. #define mdelay(n) (
  24. {unsigned long __ms=(n); while (__ms--) udelay(1000);})
  25. #else
  26. #define mdelay(n) (
  27. (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : 
  28. ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
  29. #endif
  30. #ifndef ndelay
  31. #define ndelay(x) udelay(((x)+999)/1000)
  32. #endif
  33. void calibrate_delay(void);
  34. void msleep(unsigned int msecs);
  35. unsigned long msleep_interruptible(unsigned int msecs);
  36. static inline void ssleep(unsigned int seconds)
  37. {
  38. msleep(seconds * 1000);
  39. }
  40. #endif /* defined(_LINUX_DELAY_H) */