2011-07-07 7 views
2

私は、現在の時刻がptpdに従っているかどうかを調べるために、時々gettimeofday()を呼び出す必要のあるXenomaiリアルタイムスレッドを実行しています。Xenomaiのリアルタイムスレッドからgettimeofday()を呼び出す安全な方法はありますか?

特に、XenomaiスレッドとLinuxカーネルを「ライブロック」状態にしてgettimeofday()がCPUを回転させ、決して返さないようにします(here)。

私の質問は、Xenomaiのリアルタイムスレッドからgettimeofday()の情報を取得する安全な方法はありますか?自分のLinuxカーネルに自分自身のバージョンのgettimeofday()を追加することを検討しています(もし起こると永遠にループするregular versionとは異なり、read_seqretry()がtrueを返すと私のバージョンは失敗します)。しかし、Linuxカーネルのカスタマイズが始まったばかりの場合は、すぐにやり直してください。

+0

Xenomai-helpメーリングリストのGillesによると、Xenomai 2.6にはCLOCK_HOSTRTこのニーズを満たすクロック機能を提供します。以前のバージョンでは、競合が検出された場合にループを起こさずにLinuxのリアルタイムクロックを返すカスタムドライバにioctlを追加することが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 
+0

これは、Xenomai Native APIを使用しています。 Posix APIには、ホスト時刻に基づいて時計を取得するための別の呼び出しがあります。 – David

関連する問題