Готовый перевод 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
Настройки
Готово:
