Готовый перевод Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 18.7. The tty_operations Structure in Detail

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

18.7. Подробнее о структуре tty_operations

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

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);
Функция для записи одного символа. Эта функция вызывается ядром
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. Эта функция вызывается ядром, когда происходит
вызов ioctl(2) для node устройства.

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-драйвер может попробовать сообщить устройству,
чтобы оно не посылало больше данные для него. Функция
unthrottle вызывается, когда во входном буфере ядра tty-устройств
появилось место, и можно продолжать передавать данные. Tty-
драйвер должен сообщить устройству, что данные могут
приниматься. Функции stop и start аналогичны unthrottle и
throttle, но они показывают, что драйвер должен прекратит или
возобновить передачу данных в устройство.

void (*hangup)(struct tty_struct *tty);
Функция вызывается, когда tty-драйвер должен «повесить»
устройство. В это время должно выполнится соответствующее
управление аппаратным обеспечением.

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

Функция управления line break. Эта функция вызывается для
установки состояния линии BREAK на порту RS-232. Если state
равно «-1», то состояние линии – включено, если «0», состояние
выключено. Если драйвер реализует эту функцию, ядро tty-устройств
обрабатывает вызовы ioctl: TCSBRK, TCSBRKP, TIOCSBRK, и TIOCCBRK.
Иначе эти вызовы передаются драйверу.

void (*flush_buffer)(struct tty_struct *tty);
Очищает буфер, все находящиеся там данные – теряются.

void (*set_ldisc)(struct tty_struct *tty);
Функция set line discipline (установка порядка обслуживания
линии). Эта функция вызывается, когда ядро tty-устройств меняет
«line discipline» для tty-драйвера. В основном эта функция не
используется и не реализуется драйвером.

void (*send_xchar)(struct tty_struct *tty, char ch);
Функция посылает символ типа X-type. Функция используется для
отправки высокоприоритетного символа XON или XOFF.
Посылаемый символ передается в переменной 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);

Для получения текущего состояния линии. Если драйвер возвратил
признак успешного выполнения, значение состояния передается
вызвавшему функцию.

int (*tiocmset)(struct tty_struct *tty, struct file *file, unsigned
int set, unsigned int clear);
Для установки текущего состояния линии. Параметры set и clear
содержат параметры линии, которые должны быть установлены или
сняты.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/11832/38405

Переводчики: hardorsoft

Настройки

Готово:

100.00% КП = 1.0