Я использую Linux на Xilinx RFSO C (arm64; 4 ядра работают в режиме SMP). Я использую Linux, предоставляемый цепочкой инструментов Xilinx (Peta Linux 2019.2), которая использует ядро версии 4.19, с g cc 4.7.4.0.
Мне нужно использовать службы часов для отметки времени и для сна.
У меня есть следующие требования: a) Согласованное значение тактовой частоты для всех ядер, возвращаемое из clock_gettime b) Наличие временных меток высокого разрешения (<= 1 us) c) Наличие высоких разрешение (1 мкс), превентивный сон d) На NTP не влияют часы, скачки GPS и т. д. c. e) Минимальные накладные расходы на выборку часов (для clock_gettime) </p>
Примечания: a) Мне специально не нужны часы для отображения текущего времени UT C. Мне просто нужно, чтобы это было однообразно c. б) Система никогда не приостанавливается
Linux определяет несколько часов (http://man7.org/linux/man-pages/man2/clock_getres.2.html). Из них следующие, как мне кажется, соответствуют моим потребностям: CLOCK_MONOTONI C, CLOCK_MONOTONIC_COARSE, CLOCK_MONOTONIC_RAW, CLOCK_BOOTTIME
Что касается CLOCK_MONOTONIC_COARSE, то это говорит о том, что это быстро, но менее точно: 101 * 10 * 10 * 10 000 *. * Документация для nanosleep гласит, что на Linux он основан на CLOCK_MONOTONI C и что на него не влияет NTP, et c.
Я знаю, что вызов clock_gettime на некоторых из всех вышеперечисленных избегает системного вызова (в более поздних Linux версиях).
У меня есть следующие вопросы: a) Какие из перечисленных выше часов лучше всего соответствуют моим требованиям, перечисленным выше? б) Какое разрешение вышеупомянутых часов на arm64 для clock_gettime? c) Каково эффективное разрешение наноспа?
Спасибо,