Linux poll機制精彩分析

2021-05-26 17:52:55 字數 957 閱讀 3141

所有的系統呼叫,基於都可以在它的名字前加上「

sys_

」字首,這就是它在核心中對應的函式。比如系統呼叫

open

、read

、write

、poll

,與之對應的核心函式為:

sys_open

、sys_read

、sys_write

、sys_poll。

對於系統呼叫

poll

或select

,它們對應的核心函式都是

sys_poll

。分析sys_poll

,即可理解

poll

機制。

一、核心框架

1.1  sys_poll函式

sys_poll函式源**:它對超時引數稍作處理後,直接呼叫

do_sys_poll

asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,

long timeout_msecs)

else

return do_sys_poll(ufds, nfds, &timeout_jiffies);

}

1.2 do_sys_poll函式

do_sys_poll

函式也位於位於

fs/select.c

檔案中,我們忽略其他**:

int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds, s64 *timeout)

softirq機制分析

軟中斷的含義就是模仿硬中斷的實現方式,軟就是軟體模擬的意思。它處於中斷的下半部執行,目的是想要使中斷上半部快速執行完畢。耗時的一些工作放到下半部去執行。避免丟中斷和系統響應慢的問題。在interrupt.h中定義了軟中斷號。enum hi softirq 0,timer softirq,net tx...

NodeJs ReadStream機制分析

讀了一下午源 作者寫的 太難懂了,洋洋灑灑,勉強看懂。readstream有兩個模式,即flow模式和readable模式,一旦設定成一種模式,最好不要切換成另一種。flow模式採用好處是可以控制速度,常見用法為 readable.on data function data readable.on ...

Fail fast 機制分析

fail fast 快速失敗 機制是集合中比較常見的錯誤檢測機制,防止在對集合進行遍歷的時候,出現意料之外的修改,導致意想不到的結果 下面通過乙個簡單的例子分析fail fast產生的原因 test public void failfasttest 執行結果 通過控制台輸出報錯資訊,可以看到conc...