- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- 宋寶華
- 7字
- 2018-12-31 20:25:27
3.3 Linux內核的組成
3.3.1 Linux內核源代碼的目錄結構
Linux內核源代碼包含如下目錄。
·arch:包含和硬件體系結構相關的代碼,每種平臺占一個相應的目錄,如i386、arm、arm64、powerpc、mips等。Linux內核目前已經支持30種左右的體系結構。在arch目錄下,存放的是各個平臺以及各個平臺的芯片對Linux內核進程調度、內存管理、中斷等的支持,以及每個具體的SoC和電路板的板級支持代碼。
·block:塊設備驅動程序I/O調度。
·crypto:常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗算法。
·documentation:內核各部分的通用解釋和注釋。
·drivers:設備驅動程序,每個不同的驅動占用一個子目錄,如char、block、net、mtd、i2c等。
·fs:所支持的各種文件系統,如EXT、FAT、NTFS、JFFS2等。
·include:頭文件,與系統相關的頭文件放置在include/linux子目錄下。
·init:內核初始化代碼。著名的start_kernel()就位于init/main.c文件中。
·ipc:進程間通信的代碼。
·kernel:內核最核心的部分,包括進程調度、定時器等,而和平臺相關的一部分代碼放在arch/*/kernel目錄下。
·lib:庫文件代碼。
·mm:內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm目錄下。
·net:網絡相關代碼,實現各種常見的網絡協議。
·scripts:用于配置內核的腳本文件。
·security:主要是一個SELinux的模塊。
·sound:ALSA、OSS音頻設備的驅動核心代碼和常用設備驅動。
·usr:實現用于打包和壓縮的cpio等。
·include:內核API級別頭文件。
內核一般要做到drivers與arch的軟件架構分離,驅動中不包含板級信息,讓驅動跨平臺。同時內核的通用部分(如kernel、fs、ipc、net等)則與具體的硬件(arch和drivers)剝離。
- Mastering ElasticSearch
- 曝光:Linux企業運維實戰
- SOA實踐者說
- Linux網絡內核分析與開發
- Windows Server 2012網絡操作系統企業應用案例詳解
- Application Development in iOS 7
- Advanced TypeScript Programming Projects
- RHCSARHCE 紅帽Linux認證學習指南(第7版)EX200 & EX300
- Vim 8文本處理實戰
- Introduction to R for Quantitative Finance
- Learning BeagleBone
- 鴻蒙入門:HarmonyOS應用開發
- Administering ArcGIS for Server
- Android Telephony原理解析與開發指南
- 計算機系統平臺