Table of Contents

What is mmap?

mmap is a system call that creates a new mapping in the virtual address space of the calling process at fd.

#include <sys/mman.h>

void *mmap(void *addr, size_t length, int prot, int flags,
           int fd, off_t offset);

The protection flags include:

PROT_EXEC - Pages may be executed.

PROT_READ - Pages may be read.

PROT_WRITE - Pages may be written.

PROT_NONE - Pages may not be accessed.

some interesting flags:

MAP_ANONYMOUS: The mapping is not backed by a file. MAP_FIXED_NOREPLACE: Put the mapping at the location provided by addr, but dont overwrite any existing mappings. MAP_HUGE_2MB MAP_HUGE_1GB: Map 2MB or 1GB huge pages. You may map different page sizes by bitshifting MAP_HUGE_SHIFT.