Linux 内核中的延时函数

本文介绍了Linux内核中的两类延时函数:忙等和休眠。忙等函数如ndelay、udelay和mdelay提供精确但占用CPU资源的短时间延迟;休眠函数如msleep和ssleep则释放CPU资源,可能导致延迟时间超过预期。在选择延迟函数时,需要根据时序要求和应用场景来决定,例如10ms以下推荐使用mdelay,100ms以上推荐使用msleep。
摘要由CSDN通过智能技术生成

第一类延时函数原型是:(忙等) ( 头文件是 #include<linux/delay.h> )
void ndelay(unsigned long nsecs);
void udelay(unsigned long usecs);
void mdelay(unsigned long msecs);
说明:内核函数 ndelay, udelay, 以及 mdelay 对于短延时好用,分别延后执行指定的纳秒数,微秒数或者毫秒数。它们涉及到的延时常常是最多几个毫秒。
第二类延时函数原型是:(使进程进入休眠)
void msleep(unsigned int millisecs);
unsigned long msleep_interruptible(unsigned int millisecs);
void ssleep(unsigned int seconds)
这类方法获得毫秒 (和更长) 延时而不用涉及到忙等待,前 2 个函数使调用进程进入睡眠给定的毫秒数.
一个对 msleep 的调用是不可中断的;你能确保进程睡眠至少给定的毫秒数.
如果你的驱动位于一个等待队列并且你想唤醒来打断睡眠,使用 msleep_interruptible. 从 msleep_interruptible 的返回值正常地是 0; 如果这个进程被提早唤醒,返回值是在初始请求睡眠周期中剩余的毫秒数。对 ssleep 的调用使进程进入一个不可中断的睡眠给定的秒数.


区别:
mdelay 是忙等待函数,在延迟过程中无法运行其他任务.这个延迟的时间是准确的.是需要等待多少时间就会真正等待多少时间.
msleep 是休眠函数,它不涉及忙等待&#

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值