最近工作中,遇到一個epoll引起內核無法休眠的問題。因此,在解決問題之際,同時拜讀了一下epoll機制的內核源碼。
這裡我打算從下面幾條線(每天一條線)來分享講解epoll源碼:
- 內核中epoll主要數據結構
- 內核中怎麼處理epoll_create ,epoll_ctl的add過程、epoll_wait
- epoll是如何處理邊沿觸發及水平觸發的
- epoll是如何與應用層交互數據的(真的用了mmap?)
- epoll是如何處理休眠超時及休眠過程中,被監聽的設備事件就緒後,自己如何被喚醒的
先附上內核中EPOLL機制的倆個最重要的結構體,我詳細註釋了各個成員變量的作用:
閱讀更多 無邪啊 的文章