yuyulvxian 发表于 2005-8-3 11:31:16

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

sys_time 好象没有作用

xhbdahai 发表于 2005-8-4 22:06:13

三种方法:
1. 直接使用内核变量jiffies,通用jiffies的值相减可以获得内核时间,但是此分辨率一般为10ms(可参考内核宏HZ)级.
因为jiffies的值.
2. do_gettimeofday()函数,其用法和系统调用gettimeofday相同. 他可以得到us级的时间分辨率.
3. 在内核状态下直接读取CPU时间戳寄存器.需要了解本身CPU的细节!

xhbdahai 发表于 2005-8-5 12:44:57

不好意思,关于第一点没有没有说清楚,
jiffies 表示内核的定时中断时间,即内核进程调度的时间片,在分时系统中依靠时间片来保证多道程序的并发执行,一个进程的具体时间片jiffies的值为内核宏HZ的倒数.HZ的含义为系统在一秒钟内时钟中断的次数.

yuyulvxian 发表于 2005-8-5 13:17:36

谢谢你的回答 我有点懂了
再问一下 /arch目录下 AMD对应哪一个子目录 是/ia64吗

xhbdahai 发表于 2005-8-16 13:25:13

AMD处理器和INTEL的是兼容的。/ia64为另外的体系架构!

nigel_d 发表于 2005-9-29 13:45:14

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

nigel_d 发表于 2005-9-29 13:50:00

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

sys_time 好象没有作用
:lol: 有用啊,可以取到秒数,如果在用户态可以通过localtime转换出你要的时间,不过那个时间结构有点怪,year是0~255的,也就是1900年到2000的都是100以内的100以上的是2000年以后的,月0~11表示的
页: [1]
查看完整版本: 请问如何在内核态下获取时间