PAGE_ALIGN()
来源:互联网 发布:百度推广调价软件 编辑:程序博客网 时间:2024/05/02 04:48
将物理地址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;
#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;
- PAGE_ALIGN()
- PAGE_ALIGN()
- PAGE_ALIGN()
- PAGE_ALIGN()
- PAGE_ALIGN()
- PAGE_ALIGN()
- Linux内核 ALIGN PAGE_ALIGN
- linux内核- PAGE_ALIGN()
- PAGE_ALIGN 详解 纯属原创 转载注明出处
- 为C程序员准备的0x10个最佳问题
- myeclipse 注册码
- HDU3938 并查集 并查集
- poj 3683【2-SAT】
- Openfire 好友状态的发送(用户登录)
- PAGE_ALIGN()
- 二 ARM工作模式
- 温故而知新——再读CMU巨著CSAPP
- 任天堂3DS降价40% 倒逼索尼PS Vita加快上市
- XML基础(二)
- GLU对象
- 查看mysql语句运行时间
- 盛名之下,其实难副?——再读CMU巨著CSAPP
- jackson中的tree model例子