内核空间和用户空间之间的差异

时间:2011-06-30 08:32:44

标签: linux time linux-kernel

我需要在kernl-space和用户空间之间交换struct timeval(通过netlink消息),以便计算消息创建和用户空间细化之间的经过时间。 我在内核空间中使用函数jiffies_to_timeval;在用户空间我调用gettimeofday ...但如果我打印两个结构的秒数我得到200秒的差异...我无法弄清楚这个的原因。

有什么想法吗?

谢谢大家!

1 个答案:

答案 0 :(得分:5)

several clocks inside of Linux。差异归结为它们是否在机器暂停时打勾,是否试图跟踪“挂钟时间”以及它们的高分辨率。

do_gettimeofday可能不是您想要使用的,因为该时钟试图跟踪“挂钟时间”;也就是说,它实际上可以向前或向后跳跃。如果有人 - 或某些东西(如NTP) - 决定在您阅读它的两次之间设置系统时钟怎么办?

对于时间安排,我建议使用带有CLOCK_MONOTONIC时钟ID的POSIX clock_gettime函数。 (但您可能必须使用-lrt编译用户空间应用程序。)

我相信clock_gettime也作为内核函数存在,虽然我目前没有内核源代码...