Цитата(tvv @ Jul 29 2005, 23:50)
В Вашей задаче можно попытаться использовать счетчик тактових импульсов, есть у Р2 и выше (про ARM не знаю) такой восьми битный регистр. Под QNXом он доступен через апи, у линуха через асемблер. Пускается при включении питания и считает пока не выключат PC. В отличаи от RTC точность определяется частотой процессора и счетчик не зависит от операционки. Ну а дальше считайте латентность и стройте гистограмки.
Вопрос хоть и давний, но часто актуальный:
1. под QNX опрос такого счётчика (x86 only) - ClockCycles() - и эта возможность действительно позволяет засекать временные интервалы диапазона наносекунд...
2. Но и под Linux есть такой инструмент: get_cycles() (asm/timex.h)...
3. И практически под любой OS x86 можно поискать, потому, что реализуется всё это хозяйство через специальную команду rdtsc (реализована начиная с i586, исключения amd 5x86);
4. ... в конце концов в любой OS можете сами такое сваять, вот примерный код в GCC:
Код
unsigned long long tsc( void ) {
unsigned long long f;
__asm__ __volatile__ ( "rdtsc" : "=А"( f ) );
return f;
};
5. Но что интересно, что времена, определяемые таким менером ... будут "расходиться" с системным временем (заметно на интервалах уже начиная с 1 сек.) - эти часы работают от 2-х разных физических кварцев (RTC / тактовая частота процессора), 10**-4 - 10**-5 разница ... может порождать эффекты, над которыми можно долго просидеть

...
6. Но (!) для определения латентности по прерыванию, Dedicated Systems например, применяют методики, которые они обстоятельно обсуждают - построенные на электрической (типа осциллографа) фиксации реакции на PCI!