這篇文章是《讀薄「Linux 內核設計與實現」》系列文章的第一篇,本文主要講了兩個問題:內核編程的特點以及 GNU C 在內核開發中的特點。
0x00 內核編程特點
無 libc 庫,不能訪問標准 C 文件
使用 GNU C
無內存保護機制
慎用浮點數計算
注意同步和並發
可移植性考慮:保持字節順序、64位對齊、不假定字長和頁面長度
0x01 GNU C
內聯函數:將函數展開至調用位置,省卻函數調用代價
內聯匯編:在確定體系結構的情況下,在 C 代碼中直接嵌入匯編代碼
分支聲明:分支時可根據預知條件發生的概率進行優化
例:
[code]if(error){
/* do something */
}
優化後:
[code]if(unlikely(error)){ //error為0的概率大
/* do something */
}
或:
[code]if(likely(success)){ //success為0的概率大
/* do something */
}
本文的版權歸作者 羅遠航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以進行轉載、分享,但不可在未經允許的情況下用於商業用途;轉載請注明出處。感謝配合!