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