Statement Expression – Statements and Declarations in Expressions

在 linux kernel 或是一些 open source 專案中,經常看到許多高深莫測的 macro 用法,其中 Linux Kernel 中最經典的 macro 之一就是 container_of ,它看起來很奇怪,因為他使用了 { 和 } 包起來,看起來像是一個 function ,但這個 function 並沒有回傳任何值。

看完之後,你可能仍然不知道這個 macro 是在做什麼,想要真正理解這個 macro,你必須先了解什麼是「Statement Expression 」。

閱讀全文〈Statement Expression – Statements and Declarations in Expressions〉

在 linux kernel 中的 OOP 設計思維

我在 trace linux kernel 的 source code ,面對龐大且複雜的架構,時常覺得無所適從,經常看到許多 function pointer 或是 struct ,各種指來指去,讓你迷失在複雜的程式碼中,後來陸續看過一些文章與書籍後,才了解到其實背後都是 OOP (Object-Oriented Prigramming) 的設計思維,本篇文章想要來講 linux kernel 中是如何利用 C 語言來實現物件導向程式的封裝、繼承與多型。

閱讀全文〈在 linux kernel 中的 OOP 設計思維〉

淺談 linux kernel module

kernel module

又稱 Loadable Kernel Module(LKM)

  • linux 採用 monolithic (單核心)架構,即 OS 大部分的功能都在 kernel 中實現,例如 process management, memory management 或 process scheduler 等等,這些功能都在 kernel space 下運行。與之相反的則是 microkernel (微核心)架構,僅將 OS 最基本的功能實作在 kernel 內部,其他大部份功能都則在 user space 下運作, microkernel 的設計的優點在於其可移植性與擴展性。

閱讀全文〈淺談 linux kernel module〉