2012年1月2日 星期一

linux kernel: ALIGN 含義


kernel:2.6.32.2, net/core/dev.c

#define ALIGN(x,a)    (((x)+(a)-1)&~(a-1))
就是以a為上界對齊的意思。舉個例子4k頁面邊界的例子,即:
a=4096, x = 3888,那麼以上界對齊為4096。 
        x = 4096,         结果為4096.
        x = 4222,         结果為8192. 

另外還有一種以下界對齊的方式 #define ALIGN(x,a) ((x)&~(a-1)) 
a=4096, x = 3888,结果為0.
        x = 4095,结果為0
        x = 4096,结果為4096
        x = 4222,结果為4096. 

ref:
weizhiyuan420的空间

沒有留言:

張貼留言