Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 6.2. Блокирующий ввод/вывод

Оглавление
← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Ранее в главе 3 мы рассмотрели как реализуется методы чтения и записи драйвера. Тогда мы, тем не менее, пропустили одну важную проблему: как драйвер отвечает, если он не может немедленно удовлетворить запрос? Запрос чтения может завершиться, когда данные станут доступны, но обычно это требует ожидания. Или процесс может попытаться записать, но устройство не готово к приёму данных, потому что буфер переполнен. Вызываемый процесс обычно не заботится о таких проблемах; программист просто ждёт вызова чтения или записи и получает вызова возврата после выполнения затребованного действия. В такой ситуации ваш драйвер должен (по умолчанию) блокировать процесс, переводя в режим ожидания, пока запрос не будет выполнен.

fpinger 07.12.10 в 03:51

0

Данный раздел демонстрирует как перевести процесс в режим ожидания и активировать его снова. Как обычно, мы в начале рассмотрим несколько подходов.

fpinger 07.12.10 в 03:55

0

Обзор режима ожидания

fpinger 07.12.10 в 03:55

0

Что подразумевает режим "ожидания"? Когда процесс переводится в режим ожидания, то он помечается специальным состоянием и удаляется из очереди планировщика выполнения. Пока что либо случится для изменения этого состояния процесс не будет запланирован для любого CPU и поэтому выполнен. Ожидающий процесс выведен из системы пока не случится какое либо событие.

fpinger 07.12.10 в 04:03

0

Перевод процесса в режим ожидания является для драйвера устройства в Linux простой задачей. Конечно же, что бы программировать режим ожидания правильно вам потребуется помнить пару правил.

fpinger 07.12.10 в 04:13

0
Минутку...

Следующая страница →