Готовый перевод Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 18.8. The tty_struct Structure in Detail

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

18.8. Подробнее о структуре tty_struct

Переменная tty_struct используется ядром tty-устройств для
хранения текущего состояния последовательного порта. Почти все поля,
за редким исключением, используются ядром tty-устройств. Ниже
перевидены поля, которые может использовать драйвер:

unsigned long flags;
Текущее состояние tty-устройства. Эти битовые поля доступны через
макросы:

TTY_THROTTLED

TTY_THROTTLED
Бит установлен, когда у драйвера вызвана функция throttle.
Устанавливается ядром, не должен устанавливается tty-драйвером.

TTY_IO_ERROR

Бит устанавливается когда драйвер не хочет читать или писать
данные в устройство. Если пользовательская программа попытается
сделать это, она получит ошибку -EIO. Обычно устанавливается при
выключении устройства.

TTY_OTHER_CLOSED

Используется для драйверов pty, для извещения того, что порт
закрыт.

TTY_EXCLUSIVE

Устанавливается ядром для индикации того, что порт
находится в эксклюзивном режиме, и что одновременно только
один пользователь может получить доступ к нему.

TTY_DEBUG

Не ипользуется ядром.

TTY_DO_WRITE_WAKEUP
Установленный бит, означает, что можно вызывать функцию
line discipline write_wakeup. Обычно она вызывается вместе с
функцией wake_up_interruptible.

TTY_PUSH

Используется line discipline, установленным по умолчанию, для
внутренних целей.

TTY_CLOSING

Используется ядром tty-устройств для отслеживания находится
ли порт в процессе закрытия.

TTY_DONT_FLIP

Используется line discipline установленным по умолчанию для
извещения ядра о том, что очищенный буфер не изменился.

TTY_HW_COOK_OUT
Устанавливается tty-драйвером, чтобы известить line discipline,
о том что драйвер готов передавать данные в линию. Если бит
не установлен, то line discipline копирует выходные данные
драйвера частями. Если установлен, то каждый байт
посылается индивидуально с отслеживанием изменений на
линии. В основном этот флаг не используется tty-драйвером.

TTY_HW_COOK_IN

Почти идентичн флагу TTY_DRIVER_REAL_RAW в переменной
драйвера flags. Обычно этот флаг не устанавливается
драйвером.

TTY_PTY_LOCK
Используется драйвером псевдотерминала, для блокировки и
разблокировки порта.

TTY_NO_WRITE_SPLIT

Если установлен, ядро tty-устройств не разбивает
записываемые данные на части стандартного размера. Это
значение не используется для предотвращения атак
приводящих к отказу в обслуживании на tty-порту, путем
послания в порт данных большой длинны.

struct tty_flip_buffer flip;

flip буфер для tty-устройства.

struct tty_ldisc ldisc;
line discipline для tty-устройства

wait_queue_head_t write_wait;
Аналог wait_queue для функции записи. Когда драйвер снова сможет
принимать данные, он должен послать сигнал пробуждения.

struct termios *termios;

Указатель на текущие настройки termios tty-устройства.

unsigned char stopped:1;

Показывает, остановлено ли аппаратное обеспечение устройства.
Драйвер изменять задавать это значение.

unsigned char hw_stopped:1;

Индицирует остановку tty-драйвера. Драйвер может изменять это
значение.

unsigned char low_latency:1;

Указывает, что tty-устройство является устройством c низким
временем ожидания, и способно принимать данные на очень
высокой скорости. Tty-драйвер может изменять это значение.

unsigned char closing:1;

Показывает что порт устройства – закрыт. Tty-драйвер может
изменять это значение.

struct tty_driver driver;

Текущий tty_driver структура которая контролирует это tty устройство.

void *driver_data;

Указатель на собственные данные драйвера. Эта переменная не
модифицируется ядром.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/11832/38406

Переводчики: hardorsoft

Настройки

Готово:

100.00% КП = 1.0