OS / Linux / Select 调用流程
生活随笔
收集整理的這篇文章主要介紹了
OS / Linux / Select 调用流程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux下select調用的過程:
1、用戶層應用程序調用 select(),底層調用 poll() 。
2、核心層調用 sys_select() ------> do_select() 。
最終調用文件描述符 fd 對應的 struct file 類型變量的 struct file_operations *f_op 的 poll 函數。
poll 指向的函數返回當前可否讀寫的信息。
1)如果當前可讀寫,返回讀寫信息。
2)如果當前不可讀寫,則阻塞進程,并等待驅動程序喚醒,重新調用 poll 函數,或超時返回。
3、驅動需要實現 poll 函數。
當驅動發現有數據可以讀寫時,通知核心層,核心層重新調用 poll 指向的函數查詢信息。
poll_wait( filp, &wait_q, wait)? // 此處將當前進程加入到等待隊列中,但并不阻塞
在中斷中使用 wake_up_interruptible(&wait_q) 喚醒等待隊列。
?
轉載于:https://blog.csdn.net/weixiuc/article/details/3173486
?
(SAW:Game Over!)
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的OS / Linux / Select 调用流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OS / Linux / Inode 详
- 下一篇: linux 其他常用命令