- Не викориcтовуйте time і gettimeofday для обчислення часових інтервалів - все може зламатись при синхронізації часу (скажімо, по NTP чи вручну).
- Є clock_gettime/clock_getres/clock_settime - інтерфейс до кількох системних таймерів. Для обчислення інтервалів підійде CLOCK_MONOTONIC.
- На деяких системах (залежить від конфігурації uClibc) CLOCK_MONOTONIC недоступний, хоча ядро його реалізовує. Тут допоможе syscall(__NR_clock_gettime, CLOCK_MONOTONIC, ×pec).
- Є прекрасна утилітка для перевірки доступності системних таймерів. Її джерельний код можна знайти тут: http://www.gelato.unsw.edu.au/archives/linux-ia64/0411/11792.html
- Я ще нагуглив getitimer/setitimer але так їх і не спробував, бо сискол вирішив всі мої проблеми з таймерами.
PS: а джерельні коди ядра не така вже і страшна штука як їх малюють. Я б навіть сказав що там все логічно і неможливо загубитись. Не вперше туди лазю :)