对mdelay()和msleep()的理解

在Liunx 驱动开发过程中,经常要用到延迟函数:msleep/mdelay/udelay,但是很多人对于这些不是很在意,平时开发的时候用起来也是比较随意(在我没搞清之前也是这样,哈哈)

msleep和mdelay同样都有延迟的效果,但是肯定也会有些差别的,否则就不要多此一举了。

 

mdelay是忙等待函数,在延迟过程中无法运行其他任务,是占用cpu资源的。它的延迟的时间是准确的

msleep是休眠函数,它不涉及忙等待。只是把线程挂起,不占用cpu资源的它的延迟的时间是不准确的msleep实现是基于调度,延时期间调用schedule_timeout产生调度,待时间到期后继续运行,该函数实现在kernel/timer.c中。你想延迟10ms,使用msleep(10),但是实际系统不止延迟了10ms。


在开发过程中,10ms以下对时序要求比较高的使用mdelay(),100ms以上的延时最好还是用msleep,因为使用mdelay()会占用cpu资源,可能会对linux的多任务系统运行还是有一定影响,所以这一点需要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值