2

ptpd に従って現在の時刻を確認するために、時々 gettimeofday() を呼び出す必要がある Xenomai リアルタイム スレッドを実行しています。

ただし、これを行うのは安全ではないようです。特に、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 に答える