如何理解内核中“page_align”的宏?

时间:2013-12-25 09:49:55

标签: linux kernel

代码是:

#define PAGE_SHIFT      12
#define PAGE_SIZE       (1UL << PAGE_SHIFT)
#define PAGE_MASK       (~(PAGE_SIZE-1))

#define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)

我知道这个marco对齐 页面边界上的任何地址。
如何理解此工具

1 个答案:

答案 0 :(得分:5)

通过向其添加4095(即2 12 -1),它将addr向下舍入到4096的下一个倍数(即2 12 )并清除最低12位