上面一篇文章說到: process_one_work中最重要的一件事情就是worker->current_func(work);
這裡就具體到一項很具體的任務了,由於我要研究檔案系統嘛,所以很自然就到具體的任務裡:
void wb_workfn(struct work_struct *work)
首先,work變數只是個助推器,真正的主子在哪呢?
struct bdi_writeback *wb = container_of(to_delayed_work(work),
struct bdi_writeback, dwok);
根據 bdi_writeback, 我們就能找到這一連串髒的inode了,然後寫回裡面的資料了[終於喘口氣了,因為我們終於可以接觸一些和檔案系統相關的概念了]
[還有乙個點是格外受啟發的, 上面說到乙個work_poll可以對應著多個kworker, 想想如果此時檔案系統中髒頁很多, 那麼work就會很多, 這樣的話,不同的work可能就由這個pool中的多個不同的執行緒去執行了]
後面的**我們就比較熟悉了
Linux中Workqueue機制分析
走入linux的殿堂已經有一年有餘了,在這裡我想將linux的各種實現機制分析一遍,一方面對自己來說也是溫故而知新,另一方面,促進大家的交流,最好能夠給大家一些拋磚引玉的啟迪。我是硬體出身,搞硬體已經好多年了,從是專門軟體開發也接近兩年了,在這一段時間內我越發認為軟硬體協同設計是未來發展的主流,軟硬...
Linux中Workqueue機制分析
linux中workqueue機制分析 走入linux的殿堂已經有一年有餘了,在這裡我想將linux的各種實現機制分析一遍,一方面對自己來說也是溫故而知新,另一方面,促進大家的交流,最 好能夠給大家一些拋磚引玉的啟迪。我是硬體出身,搞硬體已經好多年了,從是專門軟體開發也接近兩年了,在這一段時間內我越...
Linux中Workqueue機制分析
什麼是 workqueue linux 中的 workqueue 機制就是為了簡化核心執行緒的建立。通過呼叫 workqueue 的介面就能建立核心執行緒。並且可以根據當前系統 cpu 的個數建立執行緒的數量,使得執行緒處理的事務能夠並行化。workqueue 是核心中實現簡單而有效的機制,他顯然簡...