title: Mmap not using the given address
body: <p>Although the requested mapping address is a page start, it will use an address shifted with a few pages.</p>
  
  <p>I'm trying to do something like this:</p>
  
  <pre><code>char *mapped = mmap(base, page_size, PROT_NONE, MAP_SHARED,
                      file_handle, 0);
  printf("Base  : %p\n", base);
  printf("Mapped: %p\n", mapped);
  </code></pre>
  
  <p>Sample output (<code>page_size</code> = <code>4096</code> = <code>0x1000</code>):</p>
  
  <pre><code>Base  : 0x7f22a1047000
  Mapped: 0x7f22a1045000
  </code></pre>
  
  <p>Offset is 2 pages. This also seems to vary with <code>length</code>. For example, if instead of one page I try to map 4 pages, output becomes:</p>
  
  <pre><code>Base  : 0x7fd24d994000
  Mapped: 0x7fd24d98f000
  </code></pre>
  
  <p>which is 5 pages offset.</p>
  
  <p>Why is it behaving like this?</p>