我們在為乙個裝置編寫驅動程式時,會把驅動按照功能分為好幾個核心模組,這些核心模組之間有一些介面函式需要互相呼叫,這個怎麼實現呢?linux核心為我們提供了兩個巨集來解決這些問題。
export_symbol()
export_symbol_gpl()
export_symbol() 把函式或者符號對全部核心**公開,也就是將乙個函式以符號的方式匯出給核心中的其他模組使用
export_symbol_gpl()只能包含gpl許可**,核心核心的大部分模組匯出來的都是使用這種形式。
這裡需要顯示通過模組宣告gpl
如module_license("gpl")
核心符號表可以通過/proc/kallsysms
來檢視
$ cat /proc/kallsyms
0000000000000000 r _note_6 [pata_acpi]
0000000000000000 d __this_module [pata_acpi]
0000000000000000 t cleanup_module [pata_acpi]
0000000000000000 r __mod_pci__pacpi_pci_tbl_device_table [pata_acpi]
第一列
第二列第三列
第四列顯示該符號在核心位址空間的位址
符屬性號
符號字串就是export_symbol()匯出的符號
在那些核心模組使用這些符號
Linux核心學習筆記 12 程序排程
所謂排程 就是從就緒佇列中選擇乙個程序,投入cpu執行。排程的主戰場 就緒序列 核心 排程演算法 實質性的動作 程序的切換 對於以時間片排程為主的排程,時鐘中斷就是驅動力,確保每個程序在cpu上執行一定的時間。在排程的過程中,使用者還可以通過系統呼叫nice來調整優先順序,比如降低自己的優先順序等。...
Linux核心學習
交叉工具鏈 核心相關知識 linux系統的構成 使用者空間 核心空間 思考 為什麼劃分為兩個層次?目的其實是為保護作業系統,防止應用程式的異常導致作業系統崩潰。核心空間與使用者空間是程式執行的兩種不同狀態,通過系統呼叫和硬體中斷能夠完成從使用者空間到核心空間的轉移。那麼linux的核心由哪些構成呢?...
linux 核心學習
linux核心獲取 官網 linux作業系統的核心是模組化,可以使用lsmod命令檢視核心模組,下面展示已載入系統的模組 root 172.16.0.55 vendor composer test lsmod module size used by nfnetlink queue 8111 0 nf...