Есть ли безопасный способ вызова gettimeofday () из потока реального времени Xenomai? - PullRequest
2 голосов
/ 07 июля 2011

Я использую поток реального времени Xenomai, которому иногда нужно вызвать gettimeofday (), чтобы узнать текущее время в соответствии с ptpd.

Однако делать это кажется небезопасным:в частности, он иногда ставит поток Xenomai и ядро ​​Linux в состояние «живой блокировки», заставляя gettimeofday () вращать процессор и никогда не возвращаться, как описано здесь .

Мой вопросесть ли безопасный способ получить информацию о gettimeofday () из потока реального времени Xenomai?Я рассматриваю возможность добавления моей собственной версии gettimeofday () в мое ядро ​​Linux (моя версия потерпит неудачу, если read_seqretry () вернет true, в отличие от обычной версии , которая будет зацикливаться, когда это происходит).Однако я бы просто не стал настраивать ядро ​​Linux, если есть лучший способ сделать это.

1 Ответ

3 голосов
/ 18 октября 2012

Обновление октябрь 2012
Для всех, кто спотыкается в этой теме ...

Проверьте API Xenomai:
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
...