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

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

Структура tty_operations содержит все функции обратного вызова, который могут быть установлены tty драйверами и вызваны ядром tty. В настоящее время все указатели на функции, содержащиеся в этой структуре, также находятся в структуре tty_driver, но  скоро это будет заменен экземпляром только этой структуры.

 

int (*open)(struct tty_struct * tty, struct file * filp);

Функция open.

 

void (*close)(struct tty_struct * tty, struct file * filp);

Функция close.

 

int (*write)(struct tty_struct * tty, const unsigned char *buf, int count);

Функция write.

 

void (*put_char)(struct tty_struct *tty, unsigned char ch);

Односимвольная функция write. Эта функция вызывается ядром tty, когда в устройство был записан один символ. Если tty драйвер не определил эту функцию, когда ядро tty хочет послать один символ, вместо неё вызывается функция write.

 

void (*flush_chars)(struct tty_struct *tty);

void (*wait_until_sent)(struct tty_struct *tty, int timeout);

Функция, которая сбрасывает данные в оборудование.

 

int (*write_room)(struct tty_struct *tty);

Функция, которая показывает, сколько в буфере свободного места.

 

int (*chars_in_buffer)(struct tty_struct *tty);

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

 

int (*ioctl)(struct tty_struct *tty, struct file * file, unsigned int cmd, unsigned long arg);

Функция ioctl. Эта функция вызывается ядром tty, когда для этого узла устройства вызвана ioctl(2).

 

void (*set_termios)(struct tty_struct *tty, struct termios * old);

Функция set_termios. Эта функция вызывается ядром tty, когда были изменены параметры termios устройства.

 

void (*throttle)(struct tty_struct * tty);

void (*unthrottle)(struct tty_struct * tty);

void (*stop)(struct tty_struct *tty);

void (*start)(struct tty_struct *tty);

Функции дросселирования данных. Эти функции используются, чтобы помочь управлению перерасходом входных буферов ядра tty. Функция throttle вызывается, когда входные буферы ядра tty стали полными. Драйвер tty должен попытаться просигнализировать устройству, что оно больше не должно посылать ему данные. Функция unthrottle вызывается, когда входные буферы ядра tty  были опустошены и оно может теперь принимать данные. Затем tty драйвер должен просигнализировать устройству, что данные могут быть получены. Функции stop и start очень похожи на функции throttle и unthrottle, но они показывают, что tty драйвер должен прекратить передачу данных в устройство и потом возобновить передачу данных.

 

void (*hangup)(struct tty_struct *tty);

Функция hangup. Эта функция вызывается, когда tty драйвер должен дать отбой tty устройству. В это время должны произойти  все необходимые для этого манипуляции оборудованием.

 

void (*break_ctl)(struct tty_struct *tty, int state);

Управляющая функция line break (разрыв строки). Эта функция вызывается, когда tty драйвер включает или выключает состояние линии BREAK для порта RS-232. Если состояние имеет значение -1, состояние BREAK должен быть "включено". Если состояние имеет значение 0, состояние BREAK должна быть "выключено". Если эта функция реализуется tty драйвером, ядро tty будет обрабатывать ioctl-ы TCSBRK, TCSBRKP, TIOCSBRK и TIOCCBRK. В противном случае, эти ioctl-ы отправляются в драйвер в функцию ioctl.

 

void (*flush_buffer)(struct tty_struct *tty);

Сбрасывает буферы и теряет все оставшиеся данные.

 

void (*set_ldisc)(struct tty_struct *tty);

Функция set line discipline (установка дисциплины линии). Эта функция вызывается, когда ядро tty изменило дисциплину линии  tty драйвера. Эта функция обычно не используется и не должна быть определена драйвером.

 

void (*send_xchar)(struct tty_struct *tty, char ch);

Функция отправки символа X-типа. Эта функция используется для передачи высокоприоритетного символа XON или XOFF в tty устройство. Символ для передачи указывается в переменной ch.

 

int (*read_proc)(char *page, char **start, off_t off, int count, int *eof, void *data);

int (*write_proc)(struct file *file, const char *buffer, unsigned long count, void *data);

Функции чтения и записи /proc.

 

int (*tiocmget)(struct tty_struct *tty, struct file *file);

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

 

int (*tiocmset)(struct tty_struct *tty, struct file *file, unsigned int set, unsigned int clear);

Устанавливает текущие параметры линии заданного tty устройства. set и clear содержат различные настройки линии, которые должны быть либо установлены, либо сброшены.

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