實驗8 終端裝置的控制

2021-10-23 19:40:27 字數 1377 閱讀 2559

本實驗的基本內容是修改 linux 0.11 的終端裝置處理**,對鍵盤輸入和字元顯示進行非常規的控制。

在初始狀態,一切如常。使用者按一次 f12 後,把應用程式向終端輸出所有字母都替換為「*」。使用者再按一次 f12,又恢復正常。第三次按 f12,再進行輸出替換。依此類推。

以 ls 命令為例:

正常情況:

# ls

hello.c hello.o hello

第一次按 f12,然後輸入 ls:

# **

*****.* *****.* *****

第二次按 f12,然後輸入 ls:

# ls

hello.c hello.o hello

第三次按 f12,然後輸入 ls:

# **

*****.* *****.* *****

keyboard.s

my_func:

// 自定義my_func

subb $0x3b

,%al

call change_f12

cmpl $4

,%ecx /* check that there is enough room */

jl end_func

xorl %ebx,

%ebx

jmp put_queue

key_table:..

..long my_func,none,none,none /* 58-5b f12 ? ? ? */

// 將f12的處理函式改為my_func

console.c

int f12_flag=0;

// 定義標誌位

void

change_f12()

void

con_write

(struct tty_struct * tty)

if(f12_flag &&

((c >

64&& c <91)

||(c >

96&& c <

123)))

c ='*';

// 修改輸出

__asm__

("movb attr,%%ah\n\t"

"movw %%ax,%1\n\t"::

"a"(c)

,"m"(*

(short

*)pos)

);

答: 會呼叫func函式, 呼叫show_stat列印當前程序資訊.

答: 沒有, 修改檔案輸出中類似con_write函式.

作業系統實驗07 終端裝置的控制

進入linux 0.11 kernel chr drv目錄,開啟tty io.c,新增如下 增加press f12 handle函式。int switch show char flag 0 void press f12 handle void else if switch show char fla...

linux 終端裝置

終端解釋 終端是一種字元型裝置,它有多種型別,通常使用tty來簡稱各種型別的終端裝置。tty是teletype的縮寫。teletype是最早出現的一種終端裝置,很象電傳打字機 或者說就是 是由teletype公司生產的。在linux系統的裝置特殊檔案目錄 dev 下,終端特殊裝置檔案一般有以下幾種 ...

linux 終端裝置

早期計算機通常用電傳印表機充當終端裝置,終端裝置的作用就是接受使用者的輸入並傳遞給計算機,接受計算機的反饋返回給使用者。如下圖所示 後來電傳印表機被鍵盤和顯示器取代,linux為了支援這種外部終端裝置的連線,提供了終端裝置介面 tty 下面以海思hi3559開發板為例說明串列埠終端。在除錯開發板的時...