2

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

但是,这样做似乎是不安全的:特别是,它偶尔会使 Xenomai 线程和 Linux 内核进入“活锁”情况,导致 gettimeofday() 旋转 CPU 并且永远不会返回,如此所述。

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

4

1 回答 1

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
于 2012-10-18T07:03:27.900 回答