您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Linux系統中怎么處理終端共享,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
共享的處理程序與非共享的處理程序在注冊和運行方式上比較相似,但差異主要有以下三處:
* request_irq()的參數flags必須設置SA_SHIRQ標志。
* 對每個注冊的中斷處理程序來說,dev_id參數必須唯一。指向任一設備結構的指針就可以滿足這一要求;通常會選擇設備結構,因為它是唯一的,而且中斷處理程序可能會用到它。不能給共享的處理程序傳遞NULL值。
* 中斷處理程序必須能夠區分它的設備是否真的產生了中斷。這既需要硬件的支持,也需要處理程序中有相關的處理邏輯。如果硬件不支持這一功能,那中斷處理程序肯定會束手無策,它根本沒法知道到底是與它對應的設備發出了這個中斷,還是共享這條中斷線的其他設備發出了這個中斷。
所有共享中斷線的驅動程序都必須滿足以上要求。只要有任何一個設備沒有按規則進行共享,那么中斷線就無法共享了。指定SA_SHIRQ標志以調用request_irq()時,只有在以下兩種情況下才可能成功:中斷線當前未被注冊,或者在該線上的所有已注冊處理程序都指定了SA_SHIRQ。注意,在這一點上2.6與以前的內核是不同的,共享的處理程序可以混用SA_ INTERRUPT。內核接收一個中斷后,它將依次調用在該中斷線上注冊的每一個處理程序。因此,一個處理程序必須知道它是否應該為這個中斷負責。如果與它相關的設備并沒有產生中斷,那么處理程序應該立即退出。這需要硬件設備提供狀態寄存器(或類似機制),以便中斷處理程序進行檢查。毫無疑問,大多數硬件都提供這種功能。
關于“Linux系統中怎么處理終端共享”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。