有没有一种从Xenomai实时线程调用gettimeofday()的安全方法?

时间:2011-07-07 01:35:41

标签: linux kernel gettimeofday livelock xenomai

我正在运行一个Xenomai实时线程,有时需要调用gettimeofday(),以便根据ptpd找出当前时间。

然而,这样做似乎是不安全的:特别是,它偶尔会将Xenomai线程和Linux内核置于“活锁”状态,导致gettimeofday()旋转CPU并且永远不会返回,如所述{{3} }。

我的问题是,是否有一种安全的方法可以从Xenomai实时线程获取gettimeofday()的信息?我正在考虑将我自己的gettimeofday()版本添加到我的Linux内核中(如果read_seqretry()返回true,我的版本将失败,这与here不同,regular version将在发生时永远循环)。但是,如果有更好的方法,我很快就不会开始自定义Linux内核。

1 个答案:

答案 0 :(得分:3)

2012年10月更新
对于任何绊倒这个线索的人......

检查Xenomai API:
http://www.xenomai.org/documentation/trunk/html/api/group__clock.html

以下是使用Xenomai 2.6测试的代码片段:

// Get system time in nanoseconds (real-time safe)
// Time is usually related to GMT, because Xenomai syncs time during
// bootup, so you might get a different time offset to gettimeofday()
// which is based on your current timezone. 
double time = (double)rt_timer_read(); 
time /= 1000000000; // convert to seconds