Я пишу драйвер ядра для устройства, которое периодически производит регулярные объемы данных для чтения. Программа пользовательского пространства идеально подходит для того, чтобы сделать этот блокирующий драйвер.
Какие методы доступны для приостановки драйвера на время от 4 до 100 мс (т. е. выполнение "блокировки")? В пользовательском пространстве я бы сделал что-то вроде:
tv.tv_sec = microsecond_delay / 1000000ul;
tv.tv_usec = microsecond_delay % 1000000ul;
(void)select(0, NULL, NULL, NULL, & tv);
or
gettimeofday(tv,NULL);
и сравните конструкции.
[Изменить - мой собственный ответ]
Я буду использовать следующий код в своем драйвере:
#include <linux/jiffies.h>
...
schedule_timeout(file->private_data->my_driver_struct.read_pause_jiffies);
Вуаля! сейчас буду тестить...
extern signed long schedule_timeout(signed long timeout);
- person Jamie   schedule 10.09.2011