当前位置: 技术问答>linux和unix
那位大侠帮忙看看下面这两句代码什么意思??
来源: 互联网 发布时间:2016-04-14
本文导语: /*allocate a memory area with kmalloc.*/ kmalloc_ptr = kmalloc(MAX_HTTP_BUF_SIZE,GFP_KERNEL) /* round it up to the page bondary */ kmalloc_area = (int*)(((unsigned long)kmalloc_ptr)&PAGE_MASK); // 第一句是分配了一块内存,那么第...
/*allocate a memory area with kmalloc.*/
kmalloc_ptr = kmalloc(MAX_HTTP_BUF_SIZE,GFP_KERNEL)
/* round it up to the page bondary */
kmalloc_area = (int*)(((unsigned long)kmalloc_ptr)&PAGE_MASK); //
第一句是分配了一块内存,那么第二句是干什么的????
kmalloc_ptr = kmalloc(MAX_HTTP_BUF_SIZE,GFP_KERNEL)
/* round it up to the page bondary */
kmalloc_area = (int*)(((unsigned long)kmalloc_ptr)&PAGE_MASK); //
第一句是分配了一块内存,那么第二句是干什么的????
|
/* round it up to the page bondary */
“页边界对齐”,上面的注释有点不对的,事实上不是round up,是round down
看看PAGE_MASK定义就会明白了,PAGE_ALIGN才是round up的。
#define PAGE_MASK (~(PAGE_SIZE-1))
/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
其实应用程序里也常用这一招的,譬如4字节对齐
i = (i + 3 ) & ~3
“页边界对齐”,上面的注释有点不对的,事实上不是round up,是round down
看看PAGE_MASK定义就会明白了,PAGE_ALIGN才是round up的。
#define PAGE_MASK (~(PAGE_SIZE-1))
/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
其实应用程序里也常用这一招的,譬如4字节对齐
i = (i + 3 ) & ~3