第 11 章 內(nèi)核中的數(shù)據(jù)類型

2018-02-23 16:24 更新

第?11?章?內(nèi)核中的數(shù)據(jù)類型

在我們進入更高級主題之前, 我們需要停下來快速關(guān)注一下可移植性問題. 現(xiàn)代版本的 Linux 內(nèi)核是高度可移植的, 它正運行在很多不同體系上. 由于 Linux 內(nèi)核的多平臺特性, 打算做認真使用的驅(qū)動應(yīng)當也是可移植的.

但是內(nèi)核代碼的一個核心問題是不但能夠存取已知長度的數(shù)據(jù)項(例如, 文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)或者設(shè)備單板上的寄存器), 而且可以使用不同處理器的能力(32-位 和 64-位 體系, 并且也可能是 16 位).

內(nèi)核開發(fā)者在移植 x86 代碼到新體系時遇到的幾個問題與不正確的數(shù)據(jù)類型相關(guān). 堅持嚴格的數(shù)據(jù)類型和使用 -Wall -Wstrict-prototypes 進行編譯可能避免大部分的 bug.

內(nèi)核數(shù)據(jù)使用的數(shù)據(jù)類型分為 3 個主要類型: 標準 C 類型例如 int, 明確大小的類型例如 u32, 以及用作特定內(nèi)核對象的類型, 例如 pid_t. 我們將看到這 3 個類型種類應(yīng)當什么時候以及應(yīng)當如何使用. 本章的最后的節(jié)談?wù)撘恍┢渌牡湫蛦栴}, 你在移植 x86 的驅(qū)動到其他平臺時可能遇到的問題, 并且介紹近期內(nèi)核頭文件輸出的鏈表的常用支持.

如果你遵照我們提供的指引, 你的驅(qū)動應(yīng)當編譯和運行在你無法測試的平臺上.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號