一.前言 在内核中,有cpuidle framework可以控制cpu的节电:当没有进程调度到该cpu上执行的时候,swapper进程粉墨登场,将该cpu会被推入到idle状态.当然CPU的idle状态有深有浅,当CPU睡的比较深入的时候,有可能会关闭本地的timer硬件.这样就会引入一个很有意思的问题:local timer将无法唤醒CPU,该cpu上的所有的software timer将无法唤醒cpu.tick broadcast framework就是用来解决这个问题的. 本文中的代码来自…
专题文档汇总目录 Notes:timekeeping模块的狠心数据结构是timekeeper,它维护了系统不同类型时钟的时间值,并且介绍了获取不同类型时钟时间的函数. clocksource切换通过clocksource_notify通知到timekeeper.最后介绍了timekeeper电源管理相关问题,注册为syscore_ops进行suspend-resume,涉及到睡眠时间.hrtimer.clocksource和clockevents的suspend/resume. 原文地址:Lin…
专题文档汇总目录 Notes:BroadcastTick作为cpuidle的waker,硬件基础.BroadcastTick嵌入在当前系统Tick框架中.BroadcastTick设备初始化:周期性Tick和OneShot两种模式下BroadcastTick的工作. 原文地址:Linux时间子系统之(十四):tick broadcast framework 一.前言 在内核中,有cpuidle framework可以控制cpu的节电:当没有进程调度到该cpu上执行的时候,swapper进程粉墨登…
关于Linux时间子系统有两个系列文章讲的非常好,分别是WowoTech和DroidPhone. 还有两本书分别是介绍: Linux用户空间时间子系统<Linux/UNIX系统编程手册>的第10章 时间和第23章 定时器与休眠 Linux内核时间子系统<深入Linux内核架构>的第15章 时间管理. <Linux/Unix系统编程手册> 时间子系统 <深入Linux内核架构>时间子系统 WowoTech Linux时间子系统专题 Linux时间子系统之(一)…
专题文档汇总目录 Notes:从框架上讲解了时间子系统,从底向上包括CPU Local TImer.Global Counter.Clock Souce/Clock Events模块管理.Tick Device.高精度timer.低精度timer.Broadcast timer.Timekeeping.用户空间Time/Timer系统调用接口.用户空间函数库.然后介绍了时间子系统相关文件及其描述,不同功能需求的内核配置.低精度Timer/高精度Timer和周期Tick/Dynamic Tick两…
专题文档汇总目录 Notes: 本章主要介绍了若干种类的静态时钟,这些时钟都可以通过k_clock表示,注册到posix_clocks中.这些都是静态时钟,可以分为三大类:各种REALTIME时钟.带_ALARM唤醒功能的时钟以及进程线程相关时钟.当然不是所有的时钟都具备定时器功能,但是所有的时钟都提供clock_getres和clock_get. 然后介绍了可以动态加载/卸载的时钟,除了具备时钟.定时器功能外,还需要具备字符设备操作接口. 原文地址:Linux时间子系统之(五):POSIX C…
专题文档汇总目录 Notes:TickDevice模式,以及clocckevent设备.TickDevice设备的初始化,TickDevice是如何加入到系统中的.周期性Tick的产生. 原文地址:Linux时间子系统之(十二):periodic tick 一.tick device概念介绍 1.数据结构 在内核中,使用struct tick_device来抽象系统中的tick设备,如下: struct tick_device {    struct clock_event_device *ev…
专题文档汇总目录 Notes:从概念层次描述了tick-comm.oneshot tick.broadcast tick:重点介绍了tick和tickless概念及其区别,两种tick device:periodic tick和oneshot tick:周期性时钟是如何运作的:高精度情况下,dynamic tick运作. 原文地址:Linux时间子系统之(十三):Tick Device layer综述 一.前言 时间子系统中的tick device layer主要涉及kernel/time/ti…
专题文档汇总目录 Notes:clocksource基本概念,struct clocksource详解:注册和注销clocksource:内核如何选取clocksource:clocksource相关sysfs:cyclecounter和timercounter. 原文地址:Linux时间子系统之(十五):clocksource 一.前言 和洋葱一样,软件也是有层次的,内核往往需要对形形色色的某类型的驱动进行抽象,屏蔽掉其具体的特质,获取该类驱动共同的逻辑,而又根据这些逻辑撰写该类驱动的抽象层.…
专题文档汇总目录 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驱动代码分析 一.前言 关注…