悟空學Linux專欄----第40篇

  最近有個公司找到唐僧,希望唐僧給他解決一個驅動程序的bug,該公司最近開發了一款無線路由器,客戶在使用這款路由器的時候經常用着、用着就無法上網了,而且不管怎麼重鏈,再也鏈接不上了,但是從串口看系統還是正常運行,而且CPU的負荷也不高。唐僧把這個任務交給了悟空,爲了儘快解決這個問題該公司還特意安排了一個經驗豐富的嵌入式工程協助悟空,這個工程師叫圓方,每次悟空和他討論問題的時候,悟空說的最多的一句話就是:圓方,你怎麼看……

  悟空:該無線驅動的後半部分是採用了中斷後班部分的tasklet機制來實現的。而我個人覺得,這裏應該採用工作隊列就可以了,而不用使用tasklet。圓方,你怎麼看呢?

  圓方:其實,在中斷後半部分,判斷使用軟中斷,還是使用工作隊列的方式其實很簡單,如果這個後半部分需要休眠,就使用工作隊列,如果不需要一般就使用tasklet機制。而這個後半部分似乎不需要休眠,所以這裏選用了taslet機制。

  悟空:雖然,休眠是一個重要的判斷依據,但是,tasklet機制是採用軟中斷來實現的,而軟中斷會對系統的影響比較大,而且執行的時候不能被打斷。圓方,你怎麼看呢?

  圓方:我不這麼認爲,中斷處理,當然也包括中斷的後半部分,當然是希望儘量快的得到處理,而工作隊列作爲一個內核線程,無法保證到儘量快的處理的要求。所以中斷處理在設計的時候,儘量使用tasklet,而不是工作隊列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章