所有的系統呼叫,基於都可以在它的名字前加上「
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...