Операционная система 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()



    Содержание раздела