tty讀寫之內核實作 (你想知道的C語言 1.3.1)

Q: console和tty是什麼關係?

A: 爲了避免名詞混亂,我們先默認爲,console被當做是物理終端或者單用戶模式的終端, tty我們一般叫做虛擬終端,一般是GUI終端內部模擬的終端.

 

Q:  對console的寫操作,內部流程是什麼?

A: 調用堆棧如下:

con_write會把write系統調用的buffer送到指定的console緩衝區中,並調用con_putcs把數據輸出到顯示器.

 

Q: 對console的讀操作,執行流程是什麼?

A: 調用堆棧如下:

 

n_tty_read會調用add_wait_queue把當前線程至於阻塞狀態,並等待輸入的數據.

 

Q: 何時會喚醒read_wait等待隊列呢?

A:   當按鍵被按下,鍵盤終端處理程序會調用tty_insert_flip_char把當前輸入的按鍵信息傳遞給當前的console, 繼而調用到tty接收buffer處理函數n_tty_receive_buf或n_tty_receive_buf2, 最後調用相應的喚醒函數.

 比如:

  n_tty_receive_char_special

     

  __receive_buf

    

 

作者:     陳曦
環境:     MacOS 10.14.5
         Apple LLVM version 10.0.1 (clang-1001.0.46.4)
         Target: x86_64-apple-darwin18.6.0

         Linux 3.16.83
 
轉載請註明出處
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章