我需要在kernl-space和user-space (通过netlink消息)之间交换一个struct timeval,以便计算在用户空间中创建消息和细化之间所经过的时间。我在内核空间中使用函数jiffies_to_timeval;在用户空间中,我调用gettimeofday...but,如果我打印两个结构的秒数,我会得到200秒的差异……我找不出原因。
有什么想法吗?
谢谢大家!
发布于 2011-06-30 17:00:12
这里有several clocks inside of Linux。这些差异归根结底在于它们是否在机器挂起时滴答作响,它们是否试图跟踪“挂钟时间”,以及它们的分辨率有多高。
您可能不想使用do_gettimeofday,因为该时钟试图跟踪“挂钟时间”;也就是说,它实际上可以向前或向后跳跃。如果有人--或者某些东西(比如NTP) --决定将系统时钟设置在您读取它的两次之间,该怎么办?
对于计时,我建议使用带有CLOCK_MONOTONIC时钟ID的POSIX clock_gettime函数(不过,您可能必须使用-lrt编译您的用户空间应用程序)。
我相信clock_gettime也是作为一个内核函数存在的,尽管目前我手头没有我的内核源代码……
https://stackoverflow.com/questions/6532088
复制相似问题