Структура tty_struct в деталях

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

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

 

unsigned long flags;

Текущее состояние tty устройства. Она является битовым полем и доступна через следующие макросы:

TTY_THROTTLED

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

TTY_IO_ERROR

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

TTY_OTHER_CLOSED

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

TTY_EXCLUSIVE

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

TTY_DEBUG

В ядре нигде не используется.

TTY_DO_WRITE_WAKEUP

Если он установлен, разрешён вызов функции write_wakeup дисциплины линии. Она обычно вызывается в то же время, когда tty драйвером вызывается функция wake_up_interruptible.

TTY_PUSH

Используется только внутренне дисциплиной по умолчанию tty линии.

TTY_CLOSING

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

TTY_DONT_FLIP

Используется дисциплиной по умолчанию tty линии для уведомления ядра tty, что оно не должно изменять переключаемый буфера при его установке.

TTY_HW_COOK_OUT

Если установлен tty драйвером, он уведомляет дисциплину линии, что будет "готовить" вывод для отправки в неё. Если он не установлен, то дисциплина линии копирует вывод драйвера по кусочкам; в противном случае, она должна оценить каждый посланный байт индивидуально для изменения линии. Этот флаг обычно не устанавливается tty драйвером.

TTY_HW_COOK_IN

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

TTY_PTY_LOCK

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

TTY_NO_WRITE_SPLIT

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

struct tty_flip_buffer flip;

Переключаемый буфер для tty устройства.

struct tty_ldisc ldisc;

Дисциплина линии для tty устройства.

wait_queue_head_t write_wait;

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

struct termios *termios;

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

unsigned char stopped:1;

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

unsigned char hw_stopped:1;

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

unsigned char low_latency:1;

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

unsigned char closing:1;

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

struct tty_driver driver;

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

void *driver_data;

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

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