PAGE_ALIGN()

PAGE_ALIGN()  2012-09-26 10:54:29

分类: LINUX

将物理地址addr修整为页边界地址(页的上边界)

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

|------------|<-- PAGE_ALGN(addr)
|            |
|            |
|            |
|            |<-- addr
|            |
|            |
|            |
|            |
|------------|
one page(4K)




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




PAGE_MASK = ~(1 0000 0000 0000 - 1) = ~(1111 1111 1111) = 0000 0000 0000 
PAGE_SIZE = 1 0000 0000 0000        = 2^12              = 4K


如addr 为0x22000001 。。 PAGE_ALIGN(addr)=( 0x22000001+4096-1)&0xfffff000
=(0x22000001+0xfff)&0xfffff000=0x22001000&0xfffff000
=0x22001000;
同样,比如addr为0x22000003, PAGE_ALIGN(addr) 后仍然是0x22001000;

就是和下一个页对齐,一个页为4k。起始地址为0x xxxxx 000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值