Операционная система QNX 4.Архитектура системы



Режим нередактируемого ввода


Если бит ICANON не установлен, то говорят, что устройство находится в режиме нередактируемого ввода (raw). В этом режиме входное редактирование не выполняется, и все поступающие данные становятся немедленно доступными процессу QNX.

Примерами приложений QNX, работающими с устройствами в этом режиме, являются полноэкранные и последовательные коммуникационные программы.

При считывании данных из устройства в режиме нередактируемого ввода приложение может задать условия обработки входного запроса. Критерий доступа к вводимым нередактируемым данным определяется двумя элементами управляющей структуры termios: MIN и TIME.

Приложение может уточнить режим доступа к вводимым данным при выдаче запроса на чтение посредством функции dev_read(). Уточнение, задаваемое параметром TIMEOUT, обычно используется в протоколах записи, либо в приложениях реального времени. Обратите внимание на то, что для функции read() значение TIMEOUT всегда равно 0.

При выдаче процессом QNX запроса на чтение n байтов эти три параметра определяют, когда данный запрос должен быть выполнен, что приведено в следующей таблице.

MIN TIME TIMEOUT Описание
0 0 0 Возвратить управление немедленно, считав столько байтов, сколько доступно в данный момент (до n байтов)
М 0 0 Возвратить управление, считав до n байтов, только в том случае, если доступно по крайней мере M байтов
0 T 0 Возвратить управление, считав до n байтов, если доступен хотя бы один байт, либо если истекло T*0.1 секунд
M T 0 Возвратить управление, считав до n байтов, в том случае, если либо доступно не менее M байтов, либо если считан хотя бы один байт и интервал времени между последовательно считанными двумя любыми символами превысил T*0.1 секунд
0 0 t Зарезервировано
M 0 t Возвратить управление, считав до n байтов по истечении t*0.1 секунд, либо в случае доступности не менее M байтов
0 T t Зарезервировано
M T t Возвратить управление, считав до n байтов в случае доступности не менее M байтов, либо по истечении t*0.1 секунд после получения последнего символа, либо при получении хотя бы одного байта и превышении интервала времени между двумя последовательными считываниями символов T*0.1 секунд




Содержание  Назад  Вперед