社区
驱动开发/核心开发
帖子详情
如何实现非忙等待的短延时?
donny_2012
2012-03-30 05:54:14
就是驱动中不是用delay忙等待函数,但是依然想实现延时1ms的操作,应该如何做能尽量达到精确却又不是忙等待?
...全文
95
5
打赏
收藏
如何实现非忙等待的短延时?
就是驱动中不是用delay忙等待函数,但是依然想实现延时1ms的操作,应该如何做能尽量达到精确却又不是忙等待?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
donny_2012
2012-04-05
打赏
举报
回复
linux系统的
读rtc?通过中断实现吗?
半盒阿尔卑斯
2012-03-31
打赏
举报
回复
什么操作系统?
pengchy
2012-03-31
打赏
举报
回复
可以考虑使用schedule_timeout,但是只能实现jiffies级别的等待.正常jiffies=10ms
yoveldf
2012-03-31
打赏
举报
回复
读实时时钟,记录两者的差值就可以得到定时的时间,但关键是要有实时时钟
falloutmx
2012-03-31
打赏
举报
回复
驱动里只能忙等待
Unity3D实战入门之简单消消乐
它琐碎的功能逻辑、层出不穷的
延时
操作以及复杂的状态控制很容易让人顾此失彼,手忙脚乱,最后的结果往往是,费劲九牛二虎之力把功能
实现
好了,但代码已经乱成一团糟,定位Bug难、扩展新功能难,甚至自己读起来也难...
一文了解Linux内核
延时
机制
内核中涉及的
延时
主要有两种
实现
方式:忙
等待
或者睡眠
等待
。前者阻塞程序,在
延时
时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源)。所以,前者一般用在
延时
时间在毫秒以内的精确
延时
,后者用于
延时
时间在毫秒以上的长
延时
。为了充分利用 CPU 资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠
等待
通常是值得推荐的。1、忙
等待
短
延时
上述延迟的
实现
原理本质上是忙
等待
,它根据 CPU 频率进行一定次数的循环。2、忙
等待
长
延时
函数。
Linux驱动开发——内核
延时
操作和内核
等待
队列
文章目录Linux内核
延时
概念应用场景Linux内核相关
延时
函数Linux内核
等待
队列机制概述
等待
队列的功能驱动编程实施步骤示例代码(一)示例代码(二)总结 Linux内核
延时
概念
延时
又称为
等待
,
延时
分为两类:忙
延时
和休眠
延时
。 忙
延时
: 当任务进行忙
延时
时,任务将会导致所占用的CPU资源进行白白消耗,类似原地空转。 休眠
延时
: 进程进入休眠状态,进程会释放所占用的CPU资源给其他进程使用。...
短
延时
在内核中,小于jiffies的
延时
被认为是
短
延时
。这种
延时
在进程或者中断上下文都可能发生。由于不可能使用基于jiffies的方法
实现
短
延时
,因此唯一的解决途径就只剩下了忙
等待
。 其主要API包括: mdelay()毫秒级
延时
udelay()微妙级
延时
ndelay()纳秒级
延时
1s=10^3ms=10^6us=10^9ns ...
Linux Kernel Driver 内核
延时
,并发,竞态
内核
延时
Linux 内核
延时
分为两种方式,一种 忙
延时
一种 休眠
延时
。 忙
延时
,CPU在原地空转,
等待
条件满足,适用于
延时
时间较
短
的场景。
实现
忙
延时
的API: ndelay(x) x 表示纳秒 udelay(x) x 表示微秒 mdelay(x) x 表示毫秒数 如果延迟大于CPU能够响应的最
短
中断的时间,比如 ARM 架构 HZ 为100,那么响应中断的最
短
间隔为 10毫秒,如果延迟超过了该值(10毫秒),那么不再建议使用 忙
延时
,而采用休眠
延时
。 忙
延时
,是不释放C...
驱动开发/核心开发
21,597
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章