Измерение времени в ядре ядра Linux с точностью до микросекунды

В настоящее время я использую функцию do_gettimeofday() для измерения времени в ядре, что дает мне микросекундную точность. Есть ли что-нибудь доступное, более точное, чем это (может быть, порядка наносекунд)?

Ответ 1

Функция ktime_get() возвращает ktime_t, которая имеет наносекундное разрешение.

Ответ 2

Как я знаю, самым точным таймером должен быть регистр счетчика конкретных процессоров (например, TSC в x86). Ядро Linux предоставляет макросы rdtsc, rdtscl, rdtscll из файла. /arch/x 86/include/asm/msr.h, чтобы прочитать это значение регистра. Для ARM регистр счетчика циклов.

Эти регистры отличаются от CPU к CPU. Общий интерфейс для доступа к нему - это функция "get_cycles", которая объявляется в файле.

Может быть, этот документ может быть полезен.