Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
|
|
TTY-драйверы получили свое название от очень старой аббревиатуры слова teletypewriter (телетайп) и первоначально связывались только с физическим или виртуальным терминальным соединеним с Unix-машиной. Позже это название стало применяться к последовательному порту, который может использоваться как терминальное соединение. Примерами физического tty-устройства могут служить: устройство последовательного порта, преобразователь USB-последовательный порт, некоторые типа модемов нуждающиеся в специальной обработке данных, чтобы правильно функционировать (такие как Win-модемы). Виртуальные tty-устройства служат для поддержки виртуальной консоли, которые используются для регистрации в компьютере, через сетевое соединение или сессию X-терминала.
hardorsoft
26.10.10 в 06:01
|
|
Ядро tty-устройств в Linux (или просто tty-ядро), находится ниже уровня стандартных символьных устройств и предоставляет интерфейс для использования с терминальными устройствами. Ядро tty-устройств отвечает за управление потоком данных через tty-устройство и структуру этих данных. Это позволяет tty-драйверам сосредотачиваться на обработке данных из и к устройству и не думать о взаимодействии с пространством пользователя. Во многих драйверах, для управления потоком данных, используются различные «line disciplines»1, которые могут виртуально встраиваться в tty-устройство.
hardorsoft
26.10.10 в 06:01
|
|
На рисунке 18-1 показано как tty-ядро берет данные пользователя и посылает их в tty-устройство. Затем оно передает данные в драйвер tty line discipline, который передает их в tty-драйвер. Tty-драйвер преобразует данные в формат пригодный для физической передачи. Данные, принятые из аппаратного обеспечения, передаются назад через tty-драйвер в драйвер «tty line discipline», и затем в ядро tty-устройств, откуда они могут быть приняты пользователем. Иногда tty-драйвер соединяется напрямую с ядром tty-устройств, и ядро посылает данные прямо в tty-драйвер, но обычно между ними находится драйвер «tty line discipline», который может внести изменения в данные.
hardorsoft
26.10.10 в 06:03
|
|
Рисунок 18-1 Обзор tty-ядра
hardorsoft
26.10.10 в 06:03
|
|
Tty-драйвер не видит драйвера tty line discipline, и даже не догадывается, что он есть. Драйвер не может сообщаться непосредственно с tty line discipline. Работа tty-драйвера заключается в формировании структуры данных понятных для аппаратного обеспечения, и приеме данных от него. Tty line discipline определяет, каким образом данные должны преобразовываться при их получении от пользователя или аппаратного обеспечения. Формирование структуры данных обычно зависит от требований протокола, какого как PPP или Bluetooth.
hardorsoft
26.10.10 в 06:03
|
|
Имеются три различных типа tty-драйверов: консоль, последовательный порт и pty. Драйверы для консоли и tty уже написаны, и вероятно вам потребуется только один тип. Это все возможные новые устройства, использующиеся для взаимодействия с пользователем и системами типа драйвера последовательного порта.
hardorsoft
26.10.10 в 06:03
|
|
Отличаются эти типы tty-драйверов процедурой загрузки в ядро и тем, что tty-устройство можно увидеть в файле /proc/tty/drivers. Этот файл состоит из списка присутствующих tty-драйверов, там указывается имя драйвера, имя node по умолчанию, старший номер драйвера, диапазон используемых младших номеров и тип tty-драйвера. Вот пример этого файла:
hardorsoft
26.10.10 в 06:04
|
|
/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
hardorsoft
26.10.10 в 06:04
|
|
Каталог /proc/tty/driver/ содержит индивидуальные файлы для таких tty-драйверов, если они реализуют свои функции. По умолчанию последовательный драйвер создает файлы в этом каталоге, которые предоставляют информацию об аппаратном обеспечении последовательного порта. Позже будет рассказано, как создать такие файлы.
hardorsoft
26.10.10 в 06:04
|
|
Все зарегистрированные и загруженные в ядро tty-устройства имеют собственный подкаталог в /sys/class/tty. В этих подкаталогах имеется файл «dev», который содержит старший и младший номер назначенный tty-устройству. Если драйвер сообщает ядру расположение физического устройства и драйвера, ассоциированного с tty-устройством, то создается символьная ссылка на них. Пример этого дерева каталогов:
hardorsoft
26.10.10 в 06:04
|
|
/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
hardorsoft
26.10.10 в 06:02
|
|
1. прим. переводчика: line disciplines – порядок обслуживания линии. Ядро обрабатывает tty-устройства как места, куда может быть подключено сетевое обарудование. Поэтому tty-драйвер может по разному обрабатывать данные, в зависимости от line discipline. С заданной по умолчанию line discipline, драйвер просто передает каждый символ, который получил. Когда выбрана line discipline для SLIP или PPP драйвер читает блок данных, создает его заголовок для правильной обработки , принимающей стороной и передает новый блок данных в сеть.
hardorsoft
26.10.10 в 06:02
|
|