W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
tty_operations 結(jié)構(gòu)包含所有的函數(shù)回調(diào), 可以被一個 tty 驅(qū)動設(shè)置和被 tty 核心調(diào)用. 當(dāng)前, 所有包含在這個結(jié)構(gòu)中的的函數(shù)指針也在 tty_driver 結(jié)構(gòu)中, 但是會很快被只有一個這個結(jié)構(gòu)的實(shí)例來替代.
int (open)(struct tty_struct tty, struct file * filp);
open 函數(shù).
void (close)(struct tty_struct tty, struct file * filp);
close 函數(shù).
int (write)(struct tty_struct tty, const unsigned char *buf, int count);
write 函數(shù).
void (put_char)(struct tty_struct tty, unsigned char ch);
單字節(jié)寫函數(shù). 這個函數(shù)被 tty 核心調(diào)用當(dāng)單個字節(jié)被寫入設(shè)備. 如果一個 tty 驅(qū)動沒有定義這個函數(shù), write 函數(shù)被調(diào)用來替代, 當(dāng) tty 核心想發(fā)送一個單個字節(jié).
void (flush_chars)(struct tty_struct tty);void (wait_until_sent)(struct tty_struct tty, int timeout);
刷新數(shù)據(jù)到硬件的函數(shù).
int (write_room)(struct tty_struct tty);
指示多少緩沖空閑的函數(shù).
int (chars_in_buffer)(struct tty_struct tty);
指示多少緩沖滿數(shù)據(jù)的函數(shù).
int (ioctl)(struct tty_struct tty, struct file * file, unsigned int cmd, unsigned long arg);
ioctl 函數(shù). 這個函數(shù)被 tty 核心調(diào)用, 當(dāng) ioctl(2)在設(shè)備節(jié)點(diǎn)上被調(diào)用時.
void (set_termios)(struct tty_struct tty, struct termios * old);
set_termios 函數(shù). 這個函數(shù)被 tty 核心調(diào)用, 當(dāng)設(shè)備的 termios 設(shè)置已被改變時.
void (throttle)(struct tty_struct tty);void (unthrottle)(struct tty_struct tty);void (stop)(struct tty_struct tty);void (start)(struct tty_struct tty);
數(shù)據(jù)抑制函數(shù). 這些函數(shù)用來幫助控制 tty 核心的輸入緩存. 這個抑制函數(shù)被調(diào)用當(dāng) tty 核心的輸入緩沖滿. tty 驅(qū)動應(yīng)當(dāng)試圖通知設(shè)備不應(yīng)當(dāng)發(fā)送字符給它. unthrottle 函數(shù)被調(diào)用當(dāng) tty 核心的輸入緩沖已被清空, 并且它現(xiàn)在可以接收更多數(shù)據(jù). tty 驅(qū)動應(yīng)當(dāng)接著通知設(shè)備可以接收數(shù)據(jù). stop 和 start 函數(shù)非常象 throttle 和 unthrottle 函數(shù), 但是它們表示 tty 驅(qū)動應(yīng)當(dāng)停止發(fā)送數(shù)據(jù)給設(shè)備以及以后恢復(fù)發(fā)送數(shù)據(jù).
void (hangup)(struct tty_struct tty);
掛起函數(shù). 這個函數(shù)被調(diào)用當(dāng) tty 驅(qū)動應(yīng)當(dāng)掛起 tty 設(shè)備. 任何需要做的特殊的硬件操作應(yīng)當(dāng)在此時發(fā)生.
void (break_ctl)(struct tty_struct tty, int state);
線路中斷控制函數(shù). 這個函數(shù)被調(diào)用當(dāng)這個 tty 驅(qū)動要打開或關(guān)閉線路的 BREAK 狀態(tài)在 RS-232 端口上. 如果狀態(tài)設(shè)為 -1, BREAK 狀態(tài)應(yīng)當(dāng)打開. 如果狀態(tài)設(shè)為 0, BREAK 狀態(tài)應(yīng)當(dāng)關(guān)閉. 如果這個函數(shù)由 tty 驅(qū)動實(shí)現(xiàn), tty 核心將處理 TCSBRK, TCSBRKP, TIOCSBRK, 和 TIOCCBRK ioctl. 否則, 這些 ioctls 被發(fā)送給驅(qū)動 ioctl 函數(shù).
void (flush_buffer)(struct tty_struct tty);
刷新緩沖和丟失任何剩下的數(shù)據(jù).
void (set_ldisc)(struct tty_struct tty);
設(shè)置線路規(guī)程的函數(shù). 這個函數(shù)被調(diào)用當(dāng) tty 核心已改變這個 tty 驅(qū)動的線路規(guī)程. 這個函數(shù)通常不用并且不應(yīng)當(dāng)被一個驅(qū)動定義.
void (send_xchar)(struct tty_struct tty, char ch);
發(fā)送 X-類型 字符 的函數(shù). 這個函數(shù)用來發(fā)送一個高優(yōu)先級 XON 或者 XOFF 字符給 tty 設(shè)備. 要被發(fā)送的字符在 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 讀和寫函數(shù).
int (tiocmget)(struct tty_struct tty, struct file *file);
獲得當(dāng)前的特定 tty 設(shè)備的線路設(shè)置. 如果從 tty 設(shè)備成功獲取到, 應(yīng)當(dāng)返回這個值給調(diào)用者.
int (tiocmset)(struct tty_struct tty, struct file *file, unsigned int set, unsigned int clear);
設(shè)置當(dāng)前的特定 tty 設(shè)備的線路設(shè)置. set 和 clear 包含了去設(shè)置或者清除的不同的線路設(shè)置.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: