Hi! I believe mmap(2) is confusing (see the emboldened parts): DESCRIPTION mmap() creates a new mapping in the virtual address space of the calling process. **The starting address for the new mapping is specified in addr.** The length argument specifies the length of the mapping (which must be greater than 0). If addr is NULL, then the kernel chooses the (page‐aligned) ad‐ dress at which to create the mapping; this is the most portable method of creating a new mapping. **If addr is not NULL, then the kernel takes it as a hint about where to place the mapping; on Linux, the kernel will pick a nearby page boundary** (but al‐ ways above or equal to the value specified by /proc/sys/vm/mmap_min_addr) and attempt to create the mapping there. If another mapping already exists there, the kernel picks a new address that may or may not depend on the hint. The address of the new mapping is returned as the result of the call. The first emboldened sentence contradicts the second. It's not the starting address, but just a hint to find a nearby (>=) starting address. How about saying this?: A hint for the starting address for the new mapping is specified in addr. Cheers, Alex -- <http://www.alejandro-colomar.es/> GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature