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

Mir*_*chi 3 linux time linux-kernel

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

有任何想法吗?

谢谢你们!

Nem*_*emo 5

Linux内部几个时钟.差异归结为它们是否在机器暂停时打勾,是否试图跟踪"挂钟时间"以及它们的高分辨率.

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

对于时序,我建议使用clock_gettimeCLOCK_MONOTONIC时钟ID 的POSIX 功能.(-lrt尽管如此,您可能必须编译用户空间应用程序.)

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