Linux裝置驅動體會 程序上下文之外

2021-06-19 22:16:07 字數 586 閱讀 1223

不允許訪問使用者空間。因為沒有程序上下文,無法將任何特定程序與使用者空間關聯起來。

current指標在原子模式下是沒有任何意義的。這裡的原子模式指的是什麼模式? 也是不可用的,因為相關**和被中斷的程序沒有任何關聯。    所謂原子模式,就是不可中斷的模式,就是要麼執行完、要麼不執行的模式。

不能執行休眠和排程。原子**不可以呼叫schedual或者wait_event,也不能呼叫任何可能引起休眠的函式。例如kmalloc(..., gfp_kernel)就不符合本規則。訊號量也不能用,因為可能引起休眠。

下文中提到了:

核心**可以通過呼叫函式in_interrupt()來判斷自己是否正執行於中斷上下文,該函式無需引數,如果處理器執行在中斷上下文就返回非零值,而無論硬體中斷還是軟體中斷。

和in_interrupt()函式相關函式是in_atomic(),當排程不被允許時,後者的返回值也是非零值; 排程不被允許的情況 包括 硬體和軟體中斷上下文以及擁有自旋鎖的任何時間點。在擁有自旋鎖的情況下,current是可用的,但是禁止使用者空間訪問,因為這回導致排程的發生。不管何時使用in_interrupt(),都應該考慮真正該使用的是否是in_atomic(),這兩個函式均在中。

驅動 linux裝置驅動 字元裝置驅動開發

preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...

Linux裝置驅動

一.簡介 作業系統是通過各種驅動程式來駕馭硬體裝置,它為使用者遮蔽了各種各樣的裝置,驅動硬體是作業系統最基本的功能,並且提供統一的操作方式。正如我們檢視螢幕上的文件時,不用去管到底使用nvidia晶元,還是ati晶元的顯示卡,只需知道輸入命令後,需要的文字就顯示在螢幕上。硬體驅動程式是作業系統最基本...

linux裝置驅動

1 flash的程式設計原理都是只能將1寫為0,而不能將0寫為1。所以在flash程式設計之前,必須將對應的塊擦除,而擦除的過程就是把所有位都寫為1的過程,塊內的所有位元組變為0xff。2 nand flash與nor flash相比容量大 低 nand flash中每個塊的最大擦寫次數是100萬次...