我正在运行一个Xenomai实时线程,它有时需要调用gettimeofday(),以便根据ptpd找出当前时间。
但是,这样做似乎是不安全的:特别是,它偶尔会将xenomai线程和Linux内核置于“活锁”状态,导致gettimeofday()旋转CPU并且永远不会返回,如here所述。
我的问题是,有没有一种从Xenomai实时线程获取gettimeofday()信息的安全方法?我正在考虑将我自己版本的gettimeofday()添加到我的Linux内核中(如果read_seqretry()返回true,我的版本就会失败,而不像regular version那样会永远循环)。然而,如果有更好的方法,我也不会开始定制Linux内核。
发布于 2012-10-18 15:03:28
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 secondshttps://stackoverflow.com/questions/6604910
复制相似问题