armv8平台下sleep函数的实现

sleep函数是比较常用的api,那么在arm平台下它是怎么实现的呢?

要实现sleep函数必须要有三个方面的支持,中断系统,timer和wfi指令。这是无需多言的,sleep需要有时间参数,能够准确定位时间的就只有timer了,要让timer工作中断又是必不可少的。那么wfi是什么呢?其实wfi是arm的一条指令,全称是wait for interrupt。这个指令的作用是一旦执行就进入睡眠低功耗模式,等待中断的到来,一旦中断到来就会,在处理完中断后就会从中断中醒来。

那么sleep函数的逻辑就很明显了。

1, 传入时长参数

2 将时长参数加上现在的时刻得到醒来的时刻

3 判断现在是否到达醒来的时间点,如果到达就退出

4 将时间点转换为tick,并将此值设定比较定时寄存器

5 打开中断

6 进入wfi

7 中断到来并处理完毕后转入3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值