天天看點

【讀書筆記】【linux kernel development】【從核心出發】

【第二章 從核心出發】

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.在探索的征途中,最重要的是閱讀和修改源代碼。