我正在运行一个Xenomai实时线程,有时需要调用gettimeofday(),以便根据ptpd找出当前时间。
然而,这样做似乎是不安全的:特别是,它偶尔会将Xenomai线程和Linux内核置于“活锁”状态,导致gettimeofday()旋转CPU并且永远不会返回,如所述{{3} }。
我的问题是,是否有一种安全的方法可以从Xenomai实时线程获取gettimeofday()的信息?我正在考虑将我自己的gettimeofday()版本添加到我的Linux内核中(如果read_seqretry()返回true,我的版本将失败,这与here不同,regular version将在发生时永远循环)。但是,如果有更好的方法,我很快就不会开始自定义Linux内核。
答案 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