悟空感覺講理論太無趣了,太枯燥了,所以悟空決定講解一些實用的東西, 悟空打算這節課先講解中斷的使用。
悟空:顧名思義,中斷使用之前需要登記註冊。沒有登記註冊的中斷是無法使用的,對Linux系統來說沒有登記註冊的中斷就是黑戶,Linux內核是不會處理這種中斷的。Linux中斷的註冊函數如下爲
Int request_irq(unsigned int irq,
Irq_handler_t handler,
Unsigned long flags,
Const char *name,
Void *dev);
這個函數有五個參數,第一個參數是需要分配的中斷號,第二個參數是一個掛鉤函數。
2號童鞋:老師,這個掛鉤函數主要用來幹什麼的啊?
悟空:掛鉤函數是Linux內核常用的一種機制,通過這種掛鉤函數Linux內核的設計人員在設計一套機制的時候不用過多的關心掛鉤函數中的具體實現的邏輯。
2號童鞋:老師,這種掛鉤函數是不是和C++中的純虛函數是不是有一樣的功能啊?
悟空:其實Linux內核中使用了很多面向對象的概念,雖然Linux主要是使用C語言寫的,但是Linux吸收了很多面嚮對象語言的優點。
2號童鞋:那麼Linux爲什麼不是用C++,而要使用C語言設計呢?
悟空:這個…這個…。我下節課再給你回答吧,這個函數還沒有講完呢。這個函數的第三個參數是中斷處理程序的標誌,中斷處理標緻主要分四種,分別是“IRQF_DISABLED”、“IRQSAMPLE_RANDOM”、“IRQF_TIMER”、“IRQF_SHARED”。如果設置了“IRQF_DISABLED”標準,怎系統就會在執行該中斷的時候禁止所有的其他的中斷,如果設置了“IRQSAMPLE_RANDOM”標準,該中斷怎會對內核的熵池有貢獻,如果設置了“IRQF_TIMER”標準,則表示該中斷是爲定時器的中斷處理而準備,“IRQF_SHARED”如果設置了該標準,則該中斷線可以被多箇中斷處理程序共享。
2號童鞋:老師,已經下課很久了。
悟空:啊,下課啦,講的太投入了,這位同學你叫什麼名字啊。
2號童鞋:老師,我叫2號童鞋。