linux 驅動的module_init 淺析

背景:做linux 驅動,但是從來沒有想過module_init 函數的實現原理。都是按照框架然後就開始寫了。現在想做一個記錄。

解析:

           驅動加載到內核中有兩種方式。第一:編譯進內核裏,隨內核啓動。第二:動態加載到內核中(insmod)。

這兩種方式對module_init 的使用是不一樣的。先簡單的總結一下:

第一種:在內核的  init.text __start    和    __end 段中被統一初始化。

第二種:由busybox 中的insmod_main 函數到調用syscall()  函數。將用戶態的.ko 文件註冊到內核態中運行。自然module_init 函數就由insmod 命令調用執行。這個最重要的是理解syscall () 函數,init 和  exit 都是調用的syscall() 函數。

 

------------------------------------------------------------  華麗的分割線  --------------------------------------------------------

上面總結了。下面附上我看到的鏈接吧,我感覺最重要的是上面的一段。

第一種:https://blog.csdn.net/ffmxnjm/article/details/71713670

第二種:https://blog.csdn.net/menghuanbeike/article/details/77979497      https://blog.csdn.net/feixin620/article/details/78416560

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