關於linux驅動管理筆記

前言

最近研究linux驅動,感覺有點心得,可是不夠系統,但是我做應用的,基本瞭解原理,就已經足夠了,這裏主要講解一些個人感悟,有機會寫一些整體筆記,這裏我還是記錄下主要的看驅動的思路,可以讓人更加快速的瞭解驅動的流程,加深記憶

正文

linux的所有東西都是以文件形式存在的,當然我們驅動也是這樣出來的,基本文件當然是在文件系統,也就是硬盤中有一個目錄項,讓後存儲所有目錄,和文件。但是對於驅動,這種當然是靠註冊來的,也就是我們通過一些特定的函數,吧我們文件掛在特定節點,比如、/dev/,/proc/之類的,這裏我們暫時不要糾結掛在這個函數的如何實現,這個太難,我們只要知道在父目錄中,也就是/dev/或者/proc/這裏面試一個數據結構,裏面有個隊列,這些隊列保存了所有的子目錄,或者文件,這裏我們只要在開機或者特定時候,直接添加到這個對列中,就好了。
但是有個問題,我們如何操作這些文件呢?你們會發現,當這是一個文件目錄時候,我們需求顯示所有的子文件,當是文件時候,我們需求顯示內容,可是對於驅動呢?鼠標,網卡等等,我們需要一套特定的處理函數,這裏也是我們需要掛入的,這裏還算簡單,我們最好的方法對於同一種介質,我們只用使用根目錄的方法表即可。這裏我們不用關注。
那麼我們如何編寫驅動呢,
這裏我也不太懂,這裏是用的是註冊機制。貌似通過聲明來註冊,

module_init(你的init方法);
module_exit(你的註銷方法);

這裏的註冊方法需要一些特定的函數,吧file_ops方法函數註冊進去,並且分出驅動號等等,這個file_ops裏面有至少應該有open()和read(),write()方法,這裏到底處理什麼東西,當然是我們驅動的寄存器,可是我們只用掛入系統一些全局的東西,我們只用在內存中申請一片空間即可,log和binder就是這個道理。
在我們系統讀取文件的時候,我們僅僅知道一個目錄,可是我們通過目錄,可以找到需要的目錄項,剛纔我們知道我們掛入的是一個目錄項這裏有操作函數列表,當我們open(path)的時候,首先找到path對應的目錄項,然後調用方法列表中的open函數,這裏我們有一個file的結構體。這裏我們應該知道file_ops中open函數的參數其實就是你找到的結構體,這裏記住呦!!

後記

這裏很簡單,但是道理就是這樣。好多具體實現都沒有寫,有機會我在好好補充!!

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