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

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

hardorsoft 26.10.10 в 07:04

0

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

hardorsoft 26.10.10 в 07:04

0

int (*open)(struct tty_struct * tty, struct file * filp);
Функция open.

hardorsoft 26.10.10 в 07:05

0

void (*close)(struct tty_struct * tty, struct file * filp);
Функция close.

hardorsoft 26.10.10 в 07:16

0

int (*write)(struct tty_struct * tty, const unsigned char *buf, int
count);
Функция write.

hardorsoft 26.10.10 в 07:16

0

void (*put_char)(struct tty_struct *tty, unsigned char ch);
Функция для записи одного символа. Эта функция вызывается ядром
tty-устройств, когда требуется записать в устройство один символ.
Если драйвер не реализует эту функцию, ядро записывает один
символ, используя метод write.

hardorsoft 26.10.10 в 07:17

0

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

hardorsoft 26.10.10 в 07:19

0

Функции используются, когда ядро хочет очистить данные
устройстве.

hardorsoft 26.10.10 в 07:20

0

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

hardorsoft 26.10.10 в 07:22

0

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

hardorsoft 26.10.10 в 07:22

0

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

hardorsoft 26.10.10 в 07:22

0

Функция возвращает количество символов находящихся в буфере.

hardorsoft 26.10.10 в 07:23

0

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

hardorsoft 26.10.10 в 07:23

0

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

hardorsoft 26.10.10 в 07:23

0

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

hardorsoft 26.10.10 в 07:24

0

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

hardorsoft 26.10.10 в 07:24

0

void (*throttle)(struct tty_struct * tty);
void (*unthrottle)(struct tty_struct * tty);
void (*stop)(struct tty_struct *tty);
void (*start)(struct tty_struct *tty);

hardorsoft 26.10.10 в 07:25

0

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

hardorsoft 26.10.10 в 07:25

0

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

hardorsoft 26.10.10 в 07:25

0

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

hardorsoft 26.10.10 в 07:25

0

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

hardorsoft 26.10.10 в 07:26

0

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

hardorsoft 26.10.10 в 07:27

0

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

hardorsoft 26.10.10 в 07:28

0

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

hardorsoft 26.10.10 в 07:28

0

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

hardorsoft 26.10.10 в 07:28

0

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);

hardorsoft 26.10.10 в 07:28

0

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

hardorsoft 26.10.10 в 07:28

0

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

hardorsoft 26.10.10 в 07:28

0

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

hardorsoft 26.10.10 в 07:29

0

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

hardorsoft 26.10.10 в 07:29

0
Минутку...