我目前正试图与用户空间中的一块硬件进行对话(在幕后,一切都在使用spidev内核驱动程序,但这是另一回事。)
硬件将通过在寄存器中指示特殊值来告诉我已完成命令,我正在读取。硬件还要求在一定时间内回复我,否则命令失败。不同的命令需要不同的时间。
因此,我正在实现一种设置超时的方法,然后使用clock_gettime()
检查该超时。在我的“设置”功能中,我占用当前时间并添加我应该等待的时间间隔(通常是从几毫秒到几秒的任何时间)。然后我将此值存储起来以便以后安全保存。
在我的“检查”功能中,我再次获取当前时间,然后将其与我保存的时间进行比较。这看起来像我希望的那样有效。
根据我的使用案例,我应该使用CLOCK_MONOTONIC
还是CLOCK_MONOTONIC_RAW
?我假设CLOCK_MONOTONIC_RAW
更适合,因为我检查的时间间隔很短。我担心这么短的间隔可能代表一个全系统的异常值,其中NTP做了很多调整。请注意,我的目标系统只是Linux内核4.4及更新版本。
提前感谢您的帮助。
编辑添加:根据我的用例,我需要“挂钟”时间,而不是CPU时间。也就是说,我正在检查硬件是否在某个挂钟时间间隔内响应。
参考文献: