Ядро обычно предоставляет два типа таймеров — часы реального
времени, указывающие астрономическое время (драйверу это время обычно
интересно только для сбора статистики) и собственно таймеры — механизмы,
позволяющие отмерять интервалы времени.
Таймеры интересны драйверам с нескольких точек зрения. Один из важных способов
их использования приведен в примере 10.1: если устройство из-за какой-либо
ошибки не сгенерирует прерывания, наивный драйвер может остаться в состоянии
ожидания навсегда. Чтобы этого не происходило, драйвер должен устанавливать
будильник, который' сообщит основному потоку, что устройство подозрительно
долго не отвечает.
Таймеры используются также как альтернатива непрерывному опросу устройства
при исполнении длительных операций, например сброса устройства, если использование
прерываний почему-либо нежелательно или невозможно. Если говорить именно
о-сбросе, автору не известно ни одного устройства, которое генерировало
бы прерывание при завершении этой операции.