Linux內核中常用的一些延時方法
2013-08-09 10:32
337 查看
Linux內核中常用的一些延時方法
這些方法在以下路徑下定義:kernel/include/linux/delay.h
這些方法在以下路徑下定義:kernel/include/linux/delay.h
#ifndef _LINUX_DELAY_H #define _LINUX_DELAY_H /* * Copyright (C) 1993 Linus Torvalds * * Delay routines, using a pre-computed "loops_per_jiffy" value. */ #include <linux/kernel.h> extern unsigned long loops_per_jiffy; #include <asm/delay.h> /* * Using udelay() for intervals greater than a few milliseconds can * risk overflow for high loops_per_jiffy (high bogomips) machines. The * mdelay() provides a wrapper to prevent this. For delays greater * than MAX_UDELAY_MS milliseconds, the wrapper is used. Architecture * specific values can be defined in asm-???/delay.h as an override. * The 2nd mdelay() definition ensures GCC will optimize away the * while loop for the common cases where n <= MAX_UDELAY_MS -- Paul G. */ #ifndef MAX_UDELAY_MS #define MAX_UDELAY_MS 5 #endif #ifndef mdelay #define mdelay(n) (\ (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \ ({unsigned long __ms=(n); while (__ms--) udelay(1000);})) #endif #ifndef ndelay static inline void ndelay(unsigned long x) { udelay(DIV_ROUND_UP(x, 1000)); } #define ndelay(x) ndelay(x) #endif extern unsigned long lpj_fine; void calibrate_delay(void); void msleep(unsigned int msecs); unsigned long msleep_interruptible(unsigned int msecs); void usleep_range(unsigned long min, unsigned long max); static inline void ssleep(unsigned int seconds) { msleep(seconds * 1000); } #endif /* defined(_LINUX_DELAY_H) */
相关文章推荐
- Linux內核中常用的一些延時方法
- 一些常用的判断方法
- MyEclipse 优化的一些常用方法总结
- 统计学中抽样调查和一些常用的方法
- Spring和Hibernate集成的HibernateTemplate的一些常用方法总结
- NSDate 一些常用方法(待补充)
- 关于git的常用方法,多账号以及一些规范(更新)
- javaScript的内置对象以及一些常用的方法
- String的一些常用方法
- SQL存储过程一些常用方法
- BOM的一些常用方法和属性
- 我遇到的一些常用的java方法
- anrdroid+unity游戏开发之c#一些常用“方法”
- 分享Object中常用的一些方法
- Ext.form.ComboBox最常用的一些属性和方法
- VC中的一些常用方法(20条)
- js中关于string的一些常用的方法
- osworkflow中 常用的一些方法
- jquery的一些常用方法
- 常用的bash shell脚本 一些常用的运维管理方法