Chinaunix首页 | 论坛 | 博客
  • 博客访问: 556426
  • 博文数量: 114
  • 博客积分: 1620
  • 博客等级: 上尉
  • 技术积分: 1104
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-30 09:16
文章分类

全部博文(114)

文章存档

2016年(1)

2015年(2)

2014年(4)

2013年(9)

2012年(20)

2011年(78)

分类: 嵌入式

2011-09-09 10:36:01

原文地址:http://blog.csdn.net/myleeming/article/details/3118654


这几个函数都是内核的延时函数:

1.

udelay(); mdelay(); ndelay();实现的原理本质上都是忙等待,ndelaymdelay都是通过udelay衍生出来的,我们使用这些函数的实现往往会碰到编译器的警告implicit declaration of function 'udelay',这往往是由于头文件的使用不当造成的。在include/asm-???/delay.h中定义了udelay(),而在include/linux/delay.h中定义了mdelayndelay.

 

udelay一般适用于一个比较小的delay,如果你填的数大于2000,系统会认为你这个是一个错误的delay函数,因此如果需要2ms以上的delay需要使用mdelay函数。

 

2.由于这些delay函数本质上都是忙等待,对于长时间的忙等待意味这无谓的耗费着cpu的资源,因此对于毫秒级的延时,内核提供了msleepssleep等函数,这些函数将使得调用它的进程睡眠参数指定的时间。

阅读(1554) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~