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

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

Структура tty_driver используется, чтобы зарегистрировать tty драйвер в ядре tty. Вот список всех различных полей в структуре и каким образом они используются в ядре tty:

 

struct module *owner;

Владелец модуля этого драйвера.

 

int magic;

"Магическое" (системное) значение для этой структуры. Всегда должно быть установлено в TTY_DRIVER_MAGIC. Инициализируется в функции alloc_tty_driver.

 

const char *driver_name;

Имя драйвера, используемое в /proc/tty и sysfs.

 

const char *name;

Имя узла драйвера.

 

int name_base;

Начальный номер, используемый при создании имени для устройства. Это используется, когда ядро создаёт строковое представление данного tty устройства, связанного с этим tty драйвером.

 

short major;

Старший номер для драйвера.

 

short minor_start;

Начальный младший номер для драйвера. Он обычно установлен в то же значение, что name_base. Как правило, это значение равно 0.

 

short num;

Количество младших номеров, связанных с драйверов. Если драйвером используется весь диапазон старшего номера, это значение должно быть установлено в 255. Эта переменная инициализируется в функции alloc_tty_driver.

 

short type;

short subtype;

Описывает, какой тип tty драйвера в настоящее время зарегистрирован в ядре tty. Значение subtype зависит от type. Поле type может быть:

TTY_DRIVER_TYPE_SYSTEM

Используется внутри подсистемы tty, чтобы запомнить, что она имеет дело с внутренним tty драйвером. subtype должен быть установлен в SYSTEM_TYPE_TTY, SYSTEM_TYPE_CONSOLE, SYSTEM_TYPE_SYSCONS или SYSTEM_TYPE_SYSPTMX. Этот тип не должен быть использован любым "обычным" tty драйвером.

TTY_DRIVER_TYPE_CONSOLE

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

TTY_DRIVER_TYPE_SERIAL

Используется любым драйвер последовательного типа. subtype должен быть установлен в SERIAL_TYPE_NORMAL или SERIAL_TYPE_CALLOUT, в зависимости от типа вашего драйвера. Это один из наиболее часто используемых параметров для поля type.

TTY_DRIVER_TYPE_PTY

Используется интерфейсом псевдо-терминала (pty). subtype должен быть установлен либо в PTY_TYPE_MASTER, либо в PTY_TYPE_SLAVE.

 

struct termios init_termios;

Первоначальные значения struct termios для данного устройства, когда оно создаётся.

 

int flags;

Флаги драйвера, как описывалось ранее в этой главе.

 

struct proc_dir_entry *proc_entry;

Структура записи драйвера в /proc. Она создаётся ядром tty, если драйвер реализует функции write_proc или read_proc. Это поле не должно устанавливаться самим tty драйвером.

 

struct tty_driver *other;

Указатель на ведомый tty драйвер. Оно используется только pty драйвером и не должна использоваться любым другим tty драйвером.

 

void *driver_state;

Внутреннее состояние tty драйвера. Должно быть использовано только pty драйвером.

 

struct tty_driver *next;

struct tty_driver *prev;

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

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