Работа с устройствами
Программы QNX получают доступ к периферийным устройствам с помощью стандартных функций read(), write(), open() и close(). Для процесса QNX периферийное устройство представляется двунаправленным потоком байтов, который может считываться или записываться процессом.
Администратор устройств регулирует прохождение потока между приложением и устройством. Частичная обработка этих данных выполняется администратором Dev в соответствии с параметрами, заданными в структуре управления периферийными устройствами (termios), которая существует для каждого устройства. Пользователи могут просмотреть и/или изменить эти параметры, используя утилиту stty; в программе для этой цели используются функции tcgetattr() и tcsetattr().
Параметры tеrmios управляют функционированием устройств на низшем уровне, в частности они задают:
Кроме того, Администратор устройств реализует ряд дополнительных функций, с помощью которых процессы могут управлять периферийными устройствами.
В приведенной ниже таблице представлены некоторые из этих функций.
Процесс может | Посредством функции Си |
Выполнять синхронизированные операции чтения | dev_read() или read() + tcsetattr() |
Асинхронно оповестить процесс о доступности данных на одном или нескольких устройств ввода | dev_arm() |
Ожидать полного завершения передачи выходных данных | tcdrain() |
Послать прерывание по каналу связи | tcsendbreak() |
Отсоединить коммуникационный канал | tcdropline() |
Ввести данные | dev_insert_chars() |
Выполнить неблокирующее чтение или запись (режим O_NONBLOCK) | open() и fcntl() |