- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* Linux内核源代码导读 */34 动态定时器 动态定时器被动态的创建和撤销,当前活动的动态定时器个数没有限制 * Linux内核源代码导读 */34 创建并激活一个动态定时器 创建一个新的timer_list对象 调用init_timer初始化,并设置定时器要处理的函数和参数 设置定时时间 使用add_timer加入到合适的链表中 通常定时器只能执行一次,如果要周期性的执行,必须再次将其加入链表 * Linux内核源代码导读 */34 动态定时器的维护 * Linux内核源代码导读 */34 数据结构 * Linux内核源代码导读 */34 处理 * Linux内核源代码导读 */34 * Linux内核源代码导读 */34 动态定时器应用之delayed work * Linux内核源代码导读 */34 动态定时器应用之schedule_timeout * Linux内核源代码导读 */34 延迟函数 参见delay.S * Linux内核源代码导读 */34 缺省为delay_loop 使用tsc时为delay_tsc * Linux内核源代码导读 */34 与定时测量相关的系统调用 time() 返回从1970年1月1日凌晨0点开始的秒数 ftime() 返回从1970年1月1日凌晨0点开始的秒数以及最后一秒的毫秒数 数据结构为timeb gettimeofday() 返回从1970年1月1日凌晨0点开始的秒数 对应于sys_gettimeofday() * Linux内核源代码导读 */34 settimer() 间隔定时器 频率:周期性的触发定时器(若为0,只触发一次) alarm() 引起SIGALARM信号 * Linux内核源代码导读 */34 与时钟相关的命令 date:显示或者更改系统时钟 使用time获得时钟 使用ctime改变时钟格式 Thanks! The end. * EAX_EDX_RET、EAX_EDX_VAL针对是64位还是32位进行不同的处理,前者将rdtsc读到的值存放到val(64位的值)或者low和high(2个32位的值)中, 后者将val返回或者将low和high拼装成64位返回。 Linux内核源代码导读 Linux内核源代码导读 Linux中的时钟和定时测量 * Linux内核源代码导读 */34 定时测量 Linux内核提供两种主要的定时测量 获得当前的时间和日期 系统调用:time(), ftime()以及gettimeofday() 维持定时器 settimer(), alarm() 定时测量是由基于固定频率振荡器和计数器的几个硬件电路完成的 * Linux内核源代码导读 */34 硬时钟 80x86体系结构上,内核必须显式的与四种时钟打交道 实时时钟Real time clock,RTC 时间戳计数器Time stamp counter,TSC 可编程间隔定时器Programmable interval timer, PIT SMP系统上的本地APIC定时器 用于跟踪 当前时间 产生周期性的时钟中断, 用于计时 * Linux内核源代码导读 */34 实时时钟RTC 基本上所有的PC都包含实时时钟 独立于CPU与所有其他芯片 依靠一个独立的小电池供电给RTC中的振荡器 即使关闭PC电源,还会继续运转 与CMOS RAM往往集成在一个芯片内 例如:Motorala 146818 能在IRQ8上发出周期性的中断,频率在2HZ~8192之间 可以对其编程实现一个闹钟 * Linux内核源代码导读 */34 Linux本身只使用RTC获得时间和日期 阅读mach_get_cmos_time 对应的设备文件为/dev/rtc 可以通过设备文件对其编程 内核通过0x70和0x71两个端口访问RTC 系统管理员可以通过执行时钟程序设置时钟 native_get_wallclock get_wallclock read_persistent_clock timekeeping_init、 timekeeping_resume、 timekeeping_suspend * Linux内核源代码导读 */34 时间戳计数器TSC 在80x86微处理器中,有一个CLK输入引线 接收外部振荡器的时钟信号 从pentium开始,很多80x86微处理器都引入了一个TSC 一个64位的、用作时间戳计数器的寄存器 它在每个时钟信号(CLK)到来时+1 例如时钟频率400MHz的微处理器,TSC每2.5ns就+1 rdtsc指令用于读该寄存器 * Linux内核源代码导读 */34 在Linux2.6.26中,rdtscll()和rdts
您可能关注的文档
最近下载
- 湘少版2025年三年级春季学期英语阅读理解真题.pdf VIP
- 乘着歌声的翅膀降A调正谱伴奏.pdf VIP
- 游戏开发与游戏运营的策划技巧.docx VIP
- (正式版)H-Y-T 147.1-2013 海洋监测技术规程 第1部分:海水(正式版).docx VIP
- 中央八项规定精神相关解读.ppt VIP
- 通用学术英语1(张敬源)课后习题答案.docx VIP
- (统编2024版)语文八年级上册第三单元解读课件(新教材).pptx
- 河南安阳红色文化传承模式研究.pptx VIP
- 人教PEP版(2024)三年级上册英语全册教案(单元整体教学设计) .pdf
- 加快建设教育强国、科技强国、人才强国PPT课件 .pptx VIP
原创力文档


文档评论(0)