linux核心中的MAX MIN巨集

2021-05-28 03:08:05 字數 757 閱讀 9466

/*

* min()/max() macros that also do

* strict type-checking.. see the

* "unnecessary" pointer comparison.

*/#define min(x,y) ()

#define max(x,y) ()

/** ..and if you can't take the strict

* types, you can specify one yourself.

** or not use min/max at all, of course.

*/#define min_t(type,x,y) ()

#define max_t(type,x,y) ()

不是感覺跟我們用的有些不一樣啊:

(void) (&_x == &_y);

(void) (&_x == &_y)

這句話本身都執行程式來講完全是一句廢話,它的作用在於,本身我們無法做這樣的操作typeof(_x)==typeof(_y),所以故意判斷他們2個的位址指標是否相等,顯然是不可能相等,但是如果_x和_y的型別不一樣,其指標型別也會不一樣,2個不一樣的指標型別進行比較操作,會丟擲乙個編譯警告。也就是說char *p; int *q; 然後p==q;,這個判斷因為乙個是char*乙個是int*,會在編譯時產生乙個warning。巧妙就巧妙在這裡。

typeof(expression)用來獲取expression的型別

Linux核心中的list for each

在linux核心原始碼中,經常要對鍊錶進行操作,其中乙個很重要的巨集是list for each entry 意思大體如下 假設只有兩個結點,則第乙個member代表head,list for each entry的作用就是迴圈遍歷每乙個pos中的member子項。巨集list for each e...

Linux核心中的Namespace

linux核心中的namespace提供了乙個輕量級的基於系統呼叫層面的虛擬化解決方案。相比傳統的使用 vmware,qemu,xen,kvm,hurd的虛擬 圖1所示 基於namespace的輕量級虛擬具有易使用,易管理,無需硬體虛擬化支援,低 成本等優點。圖 1.namespace又稱conta...

linux核心中的 config

經過make menuconfig 生成 config 決定哪些驅動編譯到核心,哪些驅動編譯為模組 那為什麼呢?舉個例子分析一下 eg 在.config 中有 config dm9000 y grep config dm9000 r 1.c檔案中 arch arm mach s5pv210 mach...