The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Глава 18, TTY драйверы

Глава 18, TTY драйверы

Предыдущая  Содержание  Следующая V*D*V

Глава 18

 

Устройство tty получило своё название от очень старого сокращения, применяемого для телетайпа, и первоначально связанного только с физическим или виртуальным терминалом, подключенного к Unix машине. Со временем это название также стало означать любое устройство, похожее на последовательный порт, такое как терминальное соединение, которое могло бы также быть создано с использованием такого соединения. Примерами физических tty устройств являются последовательные порты, преобразователи из USB в последовательный порт, а также некоторые виды модемов, которым для правильной работы необходима специальная обработка (такие, как традиционные устройства в стиле Win-модемов). Виртуальные tty устройства поддерживают виртуальные консоли, которые используются в компьютере для логирования, работающие с помощью клавиатуры, через сетевое соединение, либо через сессию xterm.

 

Ядро tty драйвера Linux находится прямо под уровнем стандартного символьного драйвера и предоставляет набор возможностей, направленных на предоставление интерфейса для использования устройствами терминального стиля. Ядро отвечает одновременно за управление потоком данных через tty устройство и формат данных. Это позволяет tty драйверам сосредоточиться на обработке данных для и от оборудования, а не беспокоиться о том, как единообразным образом управлять взаимодействием с пользовательским пространством. Для управления потоком данных существует ряд различных дисциплин линии, которые могут быть виртуально "подключены" к любому tty устройству. Это выполняется разными драйверами дисциплины tty линии.

 

Как показывает Рисунок 18-1, ядро tty принимает данные от пользователя, который послал их tty устройство. Затем оно передает их в драйвер дисциплины tty линии, которая затем передает их в драйвер tty. tty драйвер преобразует данные в формат, который может быть отправлен в оборудование. Данные, принимаемые из tty оборудования, передаются обратно наверх через tty драйвер, в драйвер дисциплины tty линии и в tty ядро, откуда они могут быть получены пользователем. Иногда tty драйвер взаимодействует непосредственно с tty ядром и tty ядро отправляет данные непосредственно в tty драйвер, но обычно дисциплина tty линии имеет шанс изменить данные, которые передаются между ними.

 

Рисунок 18-1. Обзор ядра tty

Рисунок 18-1. Обзор ядра tty

 

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

 

Существуют три разных типа tty драйверов: консольный, последовательного порта и pty (всевдо-терминала). Драйверы консоли и pty уже написаны и, вероятно, являются единственно необходимыми из этих типов tty драйверов. Это позволяет любым новым драйверам использовать ядро tty для взаимодействия с пользователем и системой, подобно драйверам последовательного порта.

 

Чтобы определить, какие типы tty драйверов в данный момент загружены в ядро, и какие tty устройства присутствуют в настоящее время, посмотрите в файл /proc/tty/drivers. Этот файл состоит из списка присутствующих в данный момент времени различных tty драйверов, показывая имя драйвера, имя узла по умолчанию, старший номер для драйвера, диапазон младших номеров, используемых драйвером, и тип tty драйвера. Ниже приведён пример такого файла:

 

/dev/tty        /dev/tty       5      0 system:/dev/tty

/dev/console    /dev/console   5      1 system:console

/dev/ptmx       /dev/ptmx      5      2 system

/dev/vc/0       /dev/vc/0      4      0 system:vtmaster

usbserial       /dev/ttyUSB  188  0-254 serial

serial          /dev/ttyS      4  64-67 serial

pty_slave       /dev/pts     136  0-255 pty:slave

pty_master      /dev/ptm     128  0-255 pty:master

pty_slave       /dev/ttyp      3  0-255 pty:slave

pty_master      /dev/pty       2  0-255 pty:master

unknown         /dev/tty       4   1-63 console

 

Каталог /proc/tty/driver/ содержит отдельные файлы для некоторых из драйверов tty, если они реализуют такую функциональность. Драйвер по умолчанию для последовательного порта создаёт в этом каталоге файл, показывающий много специфичной информации об оборудовании последовательного порта. Информация о том, как создать файл в этом каталоге, представлена ниже.

 

Все tty устройства, зарегистрированные в настоящее время и присутствующие в ядре, имеют свой собственный подкаталог в /sys/class/tty. Внутри этого подкаталога есть файл "dev", который содержит старший и младший номер, присвоенный этому tty устройству. Если драйвер сообщает ядру расположение физического устройства и драйвер, связанный с tty устройством, оно создаёт к ним символьные ссылки. Пример этого дерева:

 

/sys/class/tty/

|-- console

|   `-- dev

|-- ptmx

|   `-- dev

|-- tty

|   `-- dev

|-- tty0

|   `-- dev

   ...

|-- ttyS1

|   `-- dev

|-- ttyS2

|   `-- dev

|-- ttyS3

|   `-- dev

   ...

|-- ttyUSB0

|   |-- dev

|   |-- device -> ../../../devices/pci0000:00/0000:00:09.0/usb3/3-1/3-1:1.0/ttyUSB0

|   `-- driver -> ../../../bus/usb-serial/drivers/keyspan_4

|-- ttyUSB1

|   |-- dev

|   |-- device -> ../../../devices/pci0000:00/0000:00:09.0/usb3/3-1/3-1:1.0/ttyUSB1

|   `-- driver -> ../../../bus/usb-serial/drivers/keyspan_4

|-- ttyUSB2

|   |-- dev

|   |-- device -> ../../../devices/pci0000:00/0000:00:09.0/usb3/3-1/3-1:1.0/ttyUSB2

|   `-- driver -> ../../../bus/usb-serial/drivers/keyspan_4

`-- ttyUSB3

    |-- dev

    |-- device -> ../../../devices/pci0000:00/0000:00:09.0/usb3/3-1/3-1:1.0/ttyUSB3

    `-- driver -> ../../../bus/usb-serial/drivers/keyspan_4

 

Предыдущая  Содержание  Следующая