W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在我們進(jìn)入更高級主題之前, 我們需要停下來快速關(guān)注一下可移植性問題. 現(xiàn)代版本的 Linux 內(nèi)核是高度可移植的, 它正運(yùn)行在很多不同體系上. 由于 Linux 內(nèi)核的多平臺特性, 打算做認(rèn)真使用的驅(qū)動(dòng)應(yīng)當(dāng)也是可移植的.
但是內(nèi)核代碼的一個(gè)核心問題是不但能夠存取已知長度的數(shù)據(jù)項(xiàng)(例如, 文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)或者設(shè)備單板上的寄存器), 而且可以使用不同處理器的能力(32-位 和 64-位 體系, 并且也可能是 16 位).
內(nèi)核開發(fā)者在移植 x86 代碼到新體系時(shí)遇到的幾個(gè)問題與不正確的數(shù)據(jù)類型相關(guān). 堅(jiān)持嚴(yán)格的數(shù)據(jù)類型和使用 -Wall -Wstrict-prototypes 進(jìn)行編譯可能避免大部分的 bug.
內(nèi)核數(shù)據(jù)使用的數(shù)據(jù)類型分為 3 個(gè)主要類型: 標(biāo)準(zhǔn) C 類型例如 int, 明確大小的類型例如 u32, 以及用作特定內(nèi)核對象的類型, 例如 pid_t. 我們將看到這 3 個(gè)類型種類應(yīng)當(dāng)什么時(shí)候以及應(yīng)當(dāng)如何使用. 本章的最后的節(jié)談?wù)撘恍┢渌牡湫蛦栴}, 你在移植 x86 的驅(qū)動(dòng)到其他平臺時(shí)可能遇到的問題, 并且介紹近期內(nèi)核頭文件輸出的鏈表的常用支持.
如果你遵照我們提供的指引, 你的驅(qū)動(dòng)應(yīng)當(dāng)編譯和運(yùn)行在你無法測試的平臺上.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: