我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子系统,在时间子系统中提供了一些用于延时或调度的API,例如msleep,hrtimer_nanosleep等等,这些API基于低分辨率定时器或高精度定时器来实现,本章的内容就是讨论这些方便.好用的API是如何利用定时器系统来完成所需的功能的. /**************************************************************************************…
转自:http://blog.csdn.net/droidphone/article/details/8104433 我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子系统,在时间子系统中提供了一些用于延时或调度的API,例如msleep,hrtimer_nanosleep等等,这些API基于低分辨率定时器或高精度定时器来实现,本章的内容就是讨论这些方便.好用的API是如何利用定时器系统来完成所需的功能的. /***************************…
关于Linux时间子系统有两个系列文章讲的非常好,分别是WowoTech和DroidPhone. 还有两本书分别是介绍: Linux用户空间时间子系统<Linux/UNIX系统编程手册>的第10章 时间和第23章 定时器与休眠 Linux内核时间子系统<深入Linux内核架构>的第15章 时间管理. <Linux/Unix系统编程手册> 时间子系统 <深入Linux内核架构>时间子系统 WowoTech Linux时间子系统专题 Linux时间子系统之(一)…
转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件.内核从2.6.16开始加入了高精度定时器架构.在实现方式上,内核的高分辨率定时器的实现代码几乎没有借用低分辨率定时器的数据结构和代码,内核文档给出的解释主要有以下…
专题文档汇总目录 Notes:低精度timer在内核中的数据结构以及API接口:低精度timer精巧高效的分组,使用cascade进行定时器移位,组内Timer FIFO:低精度Timer的初始化流程. 原文地址:Linux时间子系统之五:低分辨率定时器的原理和实现 利用定时器,我们可以设定在未来的某一时刻,触发一个特定的事件.所谓低分辨率定时器,是指这种定时器的计时单位基于jiffies值的计数,也就是说,它的精度只有1/HZ,假如你的内核配置的HZ是1000,那意味着系统中的低分辨率定时器的…
专题文档汇总目录 Notes:用户空间时间相关接口函数: 类型 API 精度 说明 时间 time stime time_t 精度为秒级 逐渐要被淘汰.需要定义__ARCH_WANT_SYS_TIME才能支持. 设定时间的进程需具备CAP_SYS_TIME权限. gettimerofday settimeofday timeval 精度为微秒级别 设定时间的进程需具备CAP_SYS_TIME权限. tims clock   tims进程创建后使用的CPU时间数量. clock进程使用的总的CPU…
专题文档汇总目录 Notes: 本章主要介绍了若干种类的静态时钟,这些时钟都可以通过k_clock表示,注册到posix_clocks中.这些都是静态时钟,可以分为三大类:各种REALTIME时钟.带_ALARM唤醒功能的时钟以及进程线程相关时钟.当然不是所有的时钟都具备定时器功能,但是所有的时钟都提供clock_getres和clock_get. 然后介绍了可以动态加载/卸载的时钟,除了具备时钟.定时器功能外,还需要具备字符设备操作接口. 原文地址:Linux时间子系统之(五):POSIX C…
专题文档汇总目录 Notes:首先讲解了POSIX timer的标识(唯一识别).POSIX Timer的组织(管理POSIX Timer).内核中如何抽象POSIX Timer:然后分析了POSIX timer相关系统调用(timer_create/timer_gettime/timer_getoverrun/timer_settime/timer_delete):再后重点分析了real time timer的callback函数.POSIX timer超时有三种方式(SIGEV_SIGNAL…
专题文档汇总目录 Notes:ARM平台Clock/Timer架构:System counter.Timer以及两者之间关系:Per cpu timer通过CP15访问,System counter通过memory mapped IO访问:将System counter和Per cpu timer分别作为clocksource和clock event device注册到Linux时间子系统. 原文地址:Linux时间子系统之(十七):ARM generic timer驱动代码分析 一.前言 关注…
在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事件,tick事件或者用于全局的时间管理(jiffies和时间的更新),或者用于本地cpu的进程统计.时间轮定时器框架等等.周期性时钟虽然简单有效,但是也带来了一些缺点,尤其在系统的功耗上,因为就算系统目…