start & ~PAGE_MASK 有什么用?

获取地址在页里的偏移量

 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这个宏是将某个地址页对齐,会改变这个值的,所以不能用它。

你可能感兴趣的:(start & ~PAGE_MASK 有什么用?)