Linux下timer延时的使用
http://blog.csdn.net/hzpeterchen/article/details/8090385
因笔者工作在嵌入式平台上(非x386),下面给出的结论仅在arm平台上测试过。
1. 在原子上下文,延迟应该少于100微秒。
使用udelay
2. 在非原子上下文延迟的使用
0-100us: 使用udelay
100us以上: 使用usleep_range
20ms以上且不要求精确: 使用msleep
msleep不精确,完全可以用usleep_range代替。
可以参考的文档:Documentation/timers/timers-howto.txt
下面是在Freescale i.mx6Q (arm Cortex A9, 1.0Ghz, Qual-core)平台上的测试结果,
使用的内核版本是: 3.7.0-rc1+
10us delaycompare: udelay:10:usleep_range:31
100us delaycompare: udelay:99:usleep_range:119
1ms delaycompare: mdelay:998: msleep10429: usleep_range:1017
5ms delaycompare: mdelay:5004: msleep18480: usleep_range:5017
10ms delaycompare: mdelay:9991: msleep19431: usleep_range:10020
20ms delaycompare: mdelay:19987: msleep24205: usleep_range:20019
25ms delaycompare: mdelay:24995: msleep39140: usleep_range:25021
10us delaycompare: udelay:10:usleep_range:31
100us delaycompare: udelay:100:usleep_range:119
1ms delaycompare: mdelay:998: msleep10404: usleep_range:1017
5ms delaycompare: mdelay:5003: msleep18486: usleep_range:5017
10ms delaycompare: mdelay:9993: msleep19455: usleep_range:10027
20ms delaycompare: mdelay:19990: msleep24168: usleep_range:20021
25ms delaycompare: mdelay:25004: msleep39137: usleep_range:25020
10us delaycompare: udelay:10:usleep_range:31
100us delaycompare: udelay:100:usleep_range:119
1ms delaycompare: mdelay:998: msleep10340: usleep_range:1017
5ms delaycompare: mdelay:5005: msleep18480: usleep_range:5016
10ms delaycompare: mdelay:9990: msleep19427: usleep_range:10014
20ms delaycompare: mdelay:19999: msleep24205: usleep_range:20013
25ms delaycompare: mdelay:24996: msleep39144: usleep_range:25024
10us delaycompare: udelay:10:usleep_range:33
100us delaycompare: udelay:100:usleep_range:116
1ms delaycompare: mdelay:998: msleep10387: usleep_range:1014
5ms delaycompare: mdelay:5007: msleep18484: usleep_range:5013
10ms delaycompare: mdelay:9997: msleep19454: usleep_range:10024
20ms delaycompare: mdelay:19990: msleep24179: usleep_range:20020
25ms delaycompare: mdelay:24997: msleep39140: usleep_range:25018
10us delaycompare: udelay:10:usleep_range:35
100us delaycompare: udelay:100:usleep_range:119
1ms delaycompare: mdelay:998: msleep10330: usleep_range:1017
5ms delaycompare: mdelay:5005: msleep18482: usleep_range:5016
10ms delaycompare: mdelay:9991: msleep19433: usleep_range:10021
20ms delaycompare: mdelay:19989: msleep24203: usleep_range:20020
25ms delaycompare: mdelay:24993: msleep39145: usleep_range:25022
10us delaycompare: udelay:10:usleep_range:31
100us delaycompare: udelay:100:usleep_range:120
1ms delaycompare: mdelay:998: msleep10383: usleep_range:1017
5ms delaycompare: mdelay:5004: msleep18486: usleep_range:5017
10ms delaycompare: mdelay:9994: msleep19451: usleep_range:10023
20ms delaycompare: mdelay:19991: msleep24171: usleep_range:20022
25ms delaycompare: mdelay:24998: msleep39141: usleep_range:25020
Linux下timer延时的使用的更多相关文章
- (笔记)Linux下的准确延时,#include <linux/delay.h>调用出错
在编写应用层程序时,有时需要延时一下,这个时候该怎么办呢? 在内核代码中,我们经常会看到这样的头文件使用#include <linux/delay.h>,心想着直接调用这个就可以了吧!可是 ...
- 八、Linux下的网络服务器模型
服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器,按处理方式来分有循环服务器和并发服务器. 在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提 ...
- Linux下select, poll和epoll IO模型的详解
http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...
- (转)Linux下select, poll和epoll IO模型的详解
Linux下select, poll和epoll IO模型的详解 原文:http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll ...
- linux 下各errno的意义(转)
linux 下各errno的意义(转) 本文转自:http://blog.csdn.net/kofiory/article/details/5790409 strerror(errno):获取er ...
- Linux下的虚拟Bridge实现
http://www.cnblogs.com/zmkeil/archive/2013/04/21/3034733.html Linux下的Bridge也是一种虚拟设备,这多少和vlan有点相似,它依赖 ...
- Linux下的C编程实战
Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linu ...
- Linux下串口编制【转】
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...
- Linux下的微秒级定时器: usleep, nanosleep, select, pselect
Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...
随机推荐
- springboot整合ribbitMQ
参考:https://blog.csdn.net/a13627210064/article/details/82348059 参考:https://blog.csdn.net/u010288264/a ...
- WP8.1 控件默认字体颜色 配置文件位置
C:\Program Files (x86)\Windows Phone Kits\8.1\Include\abi\Xaml\Design\generic.xaml 可在App.xaml文件中over ...
- python的线上环境配置
1.安装python 2.7 http://www.cnblogs.com/strikebone/p/3970512.html 2.安装相关前置工具 pip, Django http://www ...
- RxJava 与观察者模式
RxJava到底是什么?让我们直接跳过官方那种晦涩的追求精确的定义,其实初学RxJava只要把握两点:观察者模式和异步,就基本可以熟练使用RxJava了. 异步在这里并不需要做太多的解释,因为在概念和 ...
- 实现spring IOC的常见二种方法 setter注入与构造器注入
案例: beans.xml配置 <?xml version="1.0" encoding="UTF-8"?><beansxmlns=" ...
- HTML鼠标悬浮显示隐藏 JS方法
CSS样式表: @charset "utf-8"; /* CSS Document */ .a { width:80px; height:40px; top:200px; left ...
- Linux就业技术指导(六):天津IDC机房项目实践
一,天津IDC机房项目图片介绍 服务器DELL R720 二,远程控制卡配置方法 远程控制卡,在服务器没有装操作系统或者操作系统出问题了.用户可以通过连接到远程控制卡来连接服务器,就如同切换到我们的虚 ...
- git冲突解决方案 Intellij IDEA
一般在团队合作开发一个项目的过程中,经常出现两个人同时修改一个文件然后都向主master提交commit,这样就会产生冲突(conflict),那么这种情况如何解决? 1 新建分支 如果项目的主分支是 ...
- oracle改变表中列的编码
ALTER TABLE table_name CHANGE `name` `name` VARCHAR(255) CHARACTER SET utf8;
- java并发:Condition的应用
Condition类可以使线程等待,也可以唤醒线程.Condition类的await方法和Object类的wait方法等效Condition类的signal方法和Object类的notify方法等效C ...