QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4796|回复: 6

请问如何在内核态下获取时间

[复制链接]
发表于 2005-8-3 11:31:16 | 显示全部楼层 |阅读模式
sys_time 好象没有作用
发表于 2005-8-4 22:06:13 | 显示全部楼层
三种方法:
1. 直接使用内核变量jiffies,通用jiffies的值相减可以获得内核时间,但是此分辨率一般为10ms(可参考内核宏HZ)级.
因为jiffies的值.
2. do_gettimeofday()函数,其用法和系统调用gettimeofday相同. 他可以得到us级的时间分辨率.
3. 在内核状态下直接读取CPU时间戳寄存器.需要了解本身CPU的细节!
回复

使用道具 举报

发表于 2005-8-5 12:44:57 | 显示全部楼层
不好意思,关于第一点没有没有说清楚,
jiffies 表示内核的定时中断时间,即内核进程调度的时间片,在分时系统中依靠时间片来保证多道程序的并发执行,一个进程的具体时间片jiffies的值为内核宏HZ的倒数.HZ的含义为系统在一秒钟内时钟中断的次数.
回复

使用道具 举报

 楼主| 发表于 2005-8-5 13:17:36 | 显示全部楼层
谢谢你的回答 我有点懂了
再问一下 /arch目录下 AMD对应哪一个子目录 是/ia64吗
回复

使用道具 举报

发表于 2005-8-16 13:25:13 | 显示全部楼层
AMD处理器和INTEL的是兼容的。/ia64为另外的体系架构!
回复

使用道具 举报

发表于 2005-9-29 13:45:14 | 显示全部楼层
你取的时间都是秒数和微秒数,还得转换,在内核模式下无法使用localtime函数所以,实现函数得自己写,如果要取时分秒最好就是通过rtc的操作直接获得,x86可以通过COMS_READ来取得,具体见程序初始化时候那个time.c函数/arch/i386/kernel/time.c里面有取得时分秒,然后再通过mktime转换出系统时间。如果不是x86体系结构的有可能你的rtc不是通过注册io资源类似CMOS_READ那样来获取的,那就得根据你的实时时钟的芯片手册来操作了
回复

使用道具 举报

发表于 2005-9-29 13:50:00 | 显示全部楼层

Re: 请问如何在内核态下获取时间

[quote:b78e7c4b4f="yuyulvxian"]sys_time 好象没有作用[/quote]
有用啊,可以取到秒数,如果在用户态可以通过localtime转换出你要的时间,不过那个时间结构有点怪,year是0~255的,也就是1900年到2000的都是100以内的100以上的是2000年以后的,月0~11表示的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-6-26 18:21 , Processed in 2.478532 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表