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


Работа с устройствами


Программы 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()




- Начало -  - Назад -  - Вперед -