2

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

但是,当我的程序运行时,我还没有找到任何指向从内核获取系统时间的方向。我猜它在某个地址的内核内存中,我可以执行以下操作:

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

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

谢谢

4

3 回答 3

0

不能使用库调用?- 这只是疯狂。反正:

getnstimeofday(struct timespec *ts);这里的众多方法之一

于 2013-10-20T22:50:34.640 回答
0

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

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

于 2013-10-22T20:48:39.580 回答
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;
}
于 2013-10-21T09:03:22.480 回答