W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
tty 核心提供一個非常容易的方式給任何 tty 驅(qū)動來維護一個文件在 /proc/tty/driver 目錄中. 如果驅(qū)動定義 read_proc 或者 write_proc 函數(shù), 這個文件被創(chuàng)建. 接著, 任何在這個文件上的讀或?qū)懻{(diào)用被發(fā)送給這個驅(qū)動. 這些函數(shù)的格式只象標準的 /proc 文件處理函數(shù).
作為一個例子, 由一個簡單的 read_proc tty 回調(diào)實現(xiàn), 只是打印出當前注冊的端口號:
static int tiny_read_proc(char *page, char **start, off_t off, int count,
int *eof, void *data)
{
struct tiny_serial *tiny;
off_t begin = 0;
int length = 0;
int i;
length += sprintf(page, "tinyserinfo:1.0 driver:%s\n", DRIVER_VERSION);
for (i = 0; i < TINY_TTY_MINORS && length < PAGE_SIZE; ++i) {
tiny = tiny_table[i];
if (tiny == NULL)
continue;
length += sprintf(page+length, "%d\n", i);
if ((length + begin) > (off + count))
goto done;
if ((length + begin) < off) {
begin += length;
length = 0;
}
}
*eof = 1;
done:
if (off >= (length + begin))
return 0;
*start = page + (off-begin);
return (count < begin+length-off) ? count : begin + length-off;
}
tty 核心處理所有的 sysfs 目錄和設(shè)備創(chuàng)建, 當 tty 驅(qū)動被注冊時, 或者當單個 tty 設(shè)備被創(chuàng)建時, 依賴在 struct tty_driver 中的 TTY_DRIVER_NO_DEVFS 標志. 單個目錄一直包含 dev 文件, 它允許用戶空間工具來決定分配給設(shè)備的主次號. 它還包含一個 device 和 driver 符號連接, 如果一個指向有效的 struct device 的指針被傳遞給讀 tty_register_device 的調(diào)用. 除了這 3 個文件, 對單個 tty 驅(qū)動不可能在這個位置創(chuàng)建新的 sysfs 文件. 這個會可能在將來的內(nèi)核發(fā)行中改變.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: