Структура tty_struct в деталях |
Предыдущая Содержание Следующая |
Переменная 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. |
Предыдущая Содержание Следующая |