2015-11-23 2 views
0

Я хочу написать лог-вывод в том же формате, что и ядро-журнал:eglibc: Получение, проведённое на сайте в миллисекундах

[ 11.947248] fsl-gianfar ffe24000.ethernet eth0: Link is Up 

Отметка должна иметь такое же время ссылки в качестве времени ядра. Это означает, что когда сообщение журнала выдается одновременно с тем, как это делается в ядре, метки времени должны иметь одинаковое значение.

clock_gettime имеет неопределенную часы исходный пункт - таким образом, метка времени каждой программы имеет другое значение - даже если они были созданы в то же время:

clock_gettime(CLOCK_REALTIME, &ts); 
clock_gettime(CLOCK_MONOTONIC, &ts); 

При использовании gettimeofday вы получите время с момента Unix-эпоха ... которая по определению не соответствует.

Функция localtime() возвращает время безотказной работы - но зернистость в секундах - но мне нужно больше ...


Update: It seems что clock_gettime(CLOCK_REALTIME, &ts) должен делать то, что я хочу ... но eglibc, кажется, возвращает CLOCK_MONOTONIC.

+0

Чтение/proc/uptime не является решением для каждого вызова журнала, а getnstimeofday() доступен только в kernelspace ... – Charly

ответ

0

Идея заключается в том, чтобы сначала найти смещение для вашего CLOCK_MONOTONIC. Только что прочитайте /proc/uptime раз. Затем используйте смещение и CLOCK_MONOTONIC, чтобы распечатать время для каждого зарегистрированного события.

Смежные вопросы