Linux kernel 如何获取中断的内核时间戳?

Linux kernel 如何获取中断的内核时间戳?,linux-kernel,Linux Kernel,我有一个来自实时世界的事件,它会产生一个中断。我需要将此事件注册到一个Linux内核时间刻度,如CLOCK_MONOTONIC或CLOCK_REALTIME,目的是确定事件在实时日历时间发生的时间。目前推荐的方法是什么?我在谷歌搜索中找到了一些2011年提交的补丁来支持它,但从那时起中断处理代码被大量修改,我再也看不到时间戳的引用 对于我的预期应用,精度要求较低(1毫秒)。不过,我想知道如何正确地做到这一点。如果可以排除更高优先级中断的可能性,我认为可以进入微秒范围。如果我正确理解您的需求,您可

我有一个来自实时世界的事件,它会产生一个中断。我需要将此事件注册到一个Linux内核时间刻度,如CLOCK_MONOTONIC或CLOCK_REALTIME,目的是确定事件在实时日历时间发生的时间。目前推荐的方法是什么?我在谷歌搜索中找到了一些2011年提交的补丁来支持它,但从那时起中断处理代码被大量修改,我再也看不到时间戳的引用


对于我的预期应用,精度要求较低(1毫秒)。不过,我想知道如何正确地做到这一点。如果可以排除更高优先级中断的可能性,我认为可以进入微秒范围。

如果我正确理解您的需求,您可以使用getnstimeofday()函数实现此目的。

如果您需要高精度单调时钟值(这通常是个好主意)您应该查看
ktime\u get_ts()
函数(在
linux/ktime.h
中定义)<另一个答案中建议的code>getnstimeofday()返回“墙”时间,该时间有时可能会倒转,从而导致某些应用程序出现意外行为。

如果您只需要较低的精度,您可以不必阅读
jiffies
。 但是,如果
CONFIG_HZ
小于1000,您甚至无法获得1ms的分辨率

有关高分辨率时间戳,请参见如何:

case CLOCK\u REALTIME:getnstimeofday&ts;打破
案例时钟单调:ktime_get_ts(&ts);打破
case CLOCK_MONOTONIC_RAW:getraw MONOTONIC(&ts);打破

看来我有一些阅读要做。自从问了最初的问题后,我还记得用来连接GPS时间信号的“PPS”驱动程序。我很好奇它是否在内部使用这些调用之一。