MPROTECT(2) BSD System Calls Manual MPROTECT(2)
mprotect -- control the protection of pages
mprotect(void *addr, size_t len, int prot);
The mprotect() system call changes the specified pages to have protection prot. Not all implementa-tions implementations
tions will guarantee protection on a page basis but Mac OS X's current implementation does.
When a program violates the protections of a page, it gets a SIGBUS or SIGSEGV signal.
Currently prot can be one or more of the following:
PROT_NONE No permissions at all.
PROT_READ The pages can be read.
PROT_WRITE The pages can be written.
PROT_EXEC The pages can be executed.
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno
is set to indicate the error.
mprotect() will fail if:
[EACCES] The requested protection conflicts with the access permissions of the process on the
specified address range.
[EINVAL] addr is not a multiple of the page size (i.e. addr is not page-aligned).
[ENOTSUP] The combination of accesses requested in prot is not supported.