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延时的使用的更多相关文章

  1. (笔记)Linux下的准确延时,#include <linux/delay.h>调用出错

    在编写应用层程序时,有时需要延时一下,这个时候该怎么办呢? 在内核代码中,我们经常会看到这样的头文件使用#include <linux/delay.h>,心想着直接调用这个就可以了吧!可是 ...

  2. 八、Linux下的网络服务器模型

    服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器,按处理方式来分有循环服务器和并发服务器. 在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提 ...

  3. Linux下select, poll和epoll IO模型的详解

    http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...

  4. (转)Linux下select, poll和epoll IO模型的详解

    Linux下select, poll和epoll IO模型的详解 原文:http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll ...

  5. linux 下各errno的意义(转)

    linux 下各errno的意义(转)   本文转自:http://blog.csdn.net/kofiory/article/details/5790409 strerror(errno):获取er ...

  6. Linux下的虚拟Bridge实现

    http://www.cnblogs.com/zmkeil/archive/2013/04/21/3034733.html Linux下的Bridge也是一种虚拟设备,这多少和vlan有点相似,它依赖 ...

  7. Linux下的C编程实战

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linu ...

  8. Linux下串口编制【转】

    串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...

  9. Linux下的微秒级定时器: usleep, nanosleep, select, pselect

    Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...

随机推荐

  1. VisualSVN:强制必须填写日志信息

    上回将到怎么修改已提交的版本日志信息,而开发项目过程中团队中总是有人忘记添加日志信息注释直接提交,这样会后期维护带来不便. 现在先演示一下效果 当直接提交一个空白日志信息时 有填写日志信息时 那怎么实 ...

  2. Spring声明式事务不回滚问题

    疑问,确实像往常一样在service上添加了注解 @Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务没起作用,出现异常的时候数据没有回滚.于是就对相关代码进行了 ...

  3. 前段开发-css-总结

    应用参考https://www.cnblogs.com/alice-bj/p/8972299.html CSS:层叠样式表(Cascading Style Sheets) 1.css的特征 一.css ...

  4. 从底层谈WebGIS 原理设计与实现(一):开篇

    从底层谈WebGIS 原理设计与实现(一):开篇 作者:naaoveGI…    文章来源:http://www.cnblogs.com/naaoveGIS/    点击数:4773    更新时间: ...

  5. java.util包简介

    java.util包含集合框架.遗留的 collection 类.事件模型.日期和时间设施.国际化和各种实用工具类(字符串标记生成器.随机数生成器和位数组.日期Date类.堆栈Stack类.向量Vec ...

  6. zg项目 应用系统编码原则

    一.编码说明: 1.系统编码采用三码为原则,通常两码简称之. 1>.子系统或类型 2>.系统小分类 3>.系统大分类 如 IPMS领域业务群: DA 应用软件发展管理系统 DE公用副 ...

  7. Subquery typo with using in(转)

    Subquery typo with using in Do you use the following syntax?   SELECT * FROM TABLE WHERE COLUMN IN ( ...

  8. 单点登录(SSO)解决方案之 CAS客户端与Spring Security集成

    接上篇:单点登录(SSO)解决方案之 CAS服务端数据源设置及页面改造 Spring Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制 ...

  9. git的一些常用操作命令

    这些操作命令都是从廖雪峰老师的官网上看过后记下来的,以下是廖雪峰老师的官网,大家可以看看,教程不错~ http://www.liaoxuefeng.com/wiki/00137395163059296 ...

  10. C#aspx页面前台使用<%=%>无法取到后台的值

    检查是不是有拼接问题,正常public和protected修饰的字段或属性均可使用<%=%>.另外,加载(Page_Load)时有没有给它们赋初始值? 答 1)前台页面只能调用本后置代码的 ...