【第二章 從核心出發】
7.核心開發的差異:
①核心程式設計時既不能通路C庫也不能通路标準的C頭檔案。
②核心編譯時必須使用GNUC
③核心程式設計時缺乏像使用者空間那樣的記憶體保護機制。
④核心程式設計時難以執行浮點運算。
⑤核心給每個程序隻有一個很小的定長堆棧
⑥由于核心支援異步中斷、搶占和smp,是以必須時刻注意同步和并發。
⑦要考慮移植的重要性。
8.printk()允許通過指定一個标志來設定優先級。
如: printk(KERN_ERR "this is an error!\n" );
9.定義一個内聯函數時,需要使用static作為關鍵字,并用inline 限定。
如:
static inline void nolf(unsigned long tail_size)
一般在頭檔案定義内聯函數
為了類型安全和易讀性,優先使用内聯函數而不是宏。
10.gcc内建了一條指令用于優化【分支聲明】,核心将指令封裝成宏,如:
likely()和unlikely()
if(error)
{ ///......}
if (unlikely(error))
{//.....}
11.核心的記憶體不分頁,故每用掉一個位元組,實體記憶體就減少一個位元組。
12.在探索的征途中,最重要的是閱讀和修改源代碼。