内核时间存储在Linux的内存中在哪里?

时间:2013-10-20 22:31:17

标签: c linux linux-kernel

对于作业,我必须使用视频驱动程序和系统计时器处理程序将Linux系统的当前运行时间显示在屏幕的一角。

但是,我没有找到任何指向我在程序运行时从内核获取系统时间的方向。我猜它是在某个地址的内核内存中,我可以做类似的事情:

hour = get_word(MEM_LOCATION_OF_HOUR);
sec = get_word(MEM_LOCATION_OF_SEC);
ect...

但我不知道这是否可行。我的猜测是我们不允许使用像clock()这样的库调用,但如果这是唯一可能的方式,那么也许我们就是。

由于

3 个答案:

答案 0 :(得分:0)

无法使用库调用? - 那只是疯狂。无论如何:

getnstimeofday(struct timespec *ts); here

中的众多方法之一

答案 1 :(得分:0)

在内核中,可以使用 ktime

一个简单的例子(用于计算时间差异)供您参考。

#include <linux/ktime.h>

int fun()
{
ktime_t entry_stamp, now;
s64 delta;

/* Get the current time .*/
entry_stamp = ktime_get();

/* Do your Stuff... */

now = ktime_get();
delta = ktime_to_ns(ktime_sub(now, entry_stamp));
printk(KERN_INFO "Time Taken:%lld ns to execute\n",(long long)delta);
return 0;
}

答案 2 :(得分:0)

我发现实时时钟在启动时保持正确的值。 CMOS包含所有需要的信息。

这是我找到的链接。 http://wiki.osdev.org/CMOS#The_Real-Time_Clock