18.6. tty_driver 結(jié)構(gòu)的細(xì)節(jié)

2018-02-24 15:50 更新

18.6.?tty_driver 結(jié)構(gòu)的細(xì)節(jié)

tty_driver 結(jié)構(gòu)用來注冊(cè)一個(gè) tty 驅(qū)動(dòng)到 tty 核心. 這是結(jié)構(gòu)中所有不同的成員的列表和如何被 tty 核心使用:

struct module *owner;
這個(gè)驅(qū)動(dòng)的模塊擁有者.

int magic;
給這個(gè)結(jié)構(gòu)的"魔術(shù)"值. 應(yīng)當(dāng)一直設(shè)為 TTY_DRIVER_MAGIC. 在 alloc_tty_driver 函數(shù)中被初始化.

const char *driver_name;
驅(qū)動(dòng)的名子, 用在 /proc/tty 和 sysfs.

const char *name;
驅(qū)動(dòng)的節(jié)點(diǎn)名.

int name_base;
使用的起始數(shù)字, 當(dāng)創(chuàng)建設(shè)備名子時(shí). 當(dāng)內(nèi)核創(chuàng)建分配給這個(gè) tty 驅(qū)動(dòng)的一個(gè)特定 tty 設(shè)備的字符串表示是使用.

short major;
驅(qū)動(dòng)的主編號(hào)

short minor_start;
驅(qū)動(dòng)的開始次編號(hào). 這常常設(shè)為 name_base 的相同值. 典型地, 這個(gè)值設(shè)為 0.

short num;
分配給這個(gè)驅(qū)動(dòng)的次編號(hào)個(gè)數(shù). 如果整個(gè)主編號(hào)范圍被驅(qū)動(dòng)使用了, 這個(gè)值應(yīng)當(dāng)設(shè)為 255. 這個(gè)變量在 alloc_tty_driver 函數(shù)中初始化.

short type;short subtype;
描述什么類型的 tty 驅(qū)動(dòng)在注冊(cè)到 tty 核心. subtype 的值依賴于 type. type 成員可能是:

TTY_DRIVER_TYPE_SYSTEM
由 tty 子系統(tǒng)內(nèi)部使用來記住它在處理一個(gè)內(nèi)部 tty 驅(qū)動(dòng). subtype 應(yīng)當(dāng)設(shè)為 SYSTEM_TYPE_TTY, SYSTEM_TYEP_CONSOLE, SYSTEM_TYPE_SYSCONS, 或者 SYSTEM_TYPE_SYSPTMX. 這個(gè)類型不應(yīng)當(dāng)被任何"正常" tty 驅(qū)動(dòng)使用.

TTY_DRIVER_TYPE_CONSOLE
僅被控制臺(tái)驅(qū)動(dòng)使用.

TTY_DRIVER_TYPE_SERIAL
被任何串行類型驅(qū)動(dòng)使用. subtype 應(yīng)當(dāng)設(shè)為 SERIAL_TYPE_NORMAL 或者 SERIAL_TYPE_CALLOUT, 根據(jù)你的驅(qū)動(dòng)是什么類型. 這是 type 成員的其中一個(gè)最普遍的設(shè)置.

TTY_DRIVER_TYPE_PTY
被偽控制臺(tái)接口(pty)使用. subtype 需要被設(shè)置為 PTY_TYPE_MASTER 或者 PTY_TYPE_SLAVE.

struct termios init_termios;
當(dāng)創(chuàng)建設(shè)備時(shí)的初始化 struct termios 值.

int flags;
驅(qū)動(dòng)標(biāo)志, 如同本章前面描述的.

struct proc_dir_entry *proc_entry;
這個(gè)驅(qū)動(dòng)的 /proc 入口結(jié)構(gòu). 它由 tty 核心創(chuàng)建如果驅(qū)動(dòng)實(shí)現(xiàn)了 write_proc 或者 read_proc 函數(shù). 這個(gè)成員不應(yīng)當(dāng)由 tty 驅(qū)動(dòng)自己設(shè)置.

struct tty_driver *other;
指向一個(gè) tty 從驅(qū)動(dòng). 這只被 pty 驅(qū)動(dòng)使用, 并且不應(yīng)當(dāng)被其他的 tty 驅(qū)動(dòng)使用.

void *driver_state;
tty 驅(qū)動(dòng)的內(nèi)部狀態(tài). 應(yīng)當(dāng)只被 pty 驅(qū)動(dòng)使用.

struct tty_driver next;struct tty_driver prev;
連接變量. 這些變量被 tty 核心使用來連接所有的不同 tty 驅(qū)動(dòng), 并且不應(yīng)當(dāng)被任何 tty 驅(qū)動(dòng)碰.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)