|MMAP2(2)||Linux Programmer's Manual||MMAP2(2)|
#include <sys/mman.h> /* Definition of MAP_* and PROT_* constants */ #include <sys/syscall.h> /* Definition of SYS_* constants */ #include <unistd.h>
void *syscall(SYS_mmap2, unsigned long addr, unsigned long length, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long pgoffset);
The mmap2() system call provides the same interface as mmap(2), except that the final argument specifies the offset into the file in 4096-byte units (instead of bytes, as is done by mmap(2)). This enables applications that use a 32-bit off_t to map large files (up to 2^44 bytes).
- Problem with getting the data from user space.
- (Various platforms where the page size is not 4096 bytes.) offset * 4096 is not a multiple of the system page size.
mmap2() can also return any of the errors described in mmap(2).
This system call does not exist on x86-64.
On ia64, the unit for offset is actually the system page size, rather than 4096 bytes.