start & ~PAGE_MASK 有什么用?

来源:互联网 发布:广东舞蹈服装店淘宝 编辑:程序博客网 时间:2024/04/28 08:03

获取地址在页里的偏移量

 PAGE_ALIGN()应该是看是否对齐,PAGE_MASK获得在页中的offset有什么用呢?
    比如在do_munmap()中有这么一句
    if((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
          return -EINVAL;
    这里的start & ~PAGE_MASK 为什么要判断start在页内的偏移呢?

线性区是要4K对其的。如果不对其的话怎么与物理页的地址相对应呢。

PAGE_ALIGN()应该是看是否对齐,PAGE_MASK获得在页中的offset有什么用呢?
    比如在do_munmap()中有这么一句
    if((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
          return -EINVAL;
    这里的start & ~PAGE_MASK 为什么要判断start在页内的偏移呢?

这里应该是只需要判断start这个地址是否页对齐了,PAGE_ALIGN这个宏是将某个地址页对齐,会改变这个值的,所以不能用它。

原创粉丝点击