munmap_flags()

Unmap previously mapped addresses, exercising more control than possible with munmap()

Synopsis:

#include <sys/mman.h>

int munmap_flags( void * addr,
                  size_t len,
                  unsigned flags );

Arguments:

addr
The beginning of the range of addresses that you want to unmap.
len
The length of the range of addresses, in bytes.
flags
0, or a combination of the following bits:
  • UNMAP_INIT_REQUIRED
  • UNMAP_INIT_OPTIONAL

For more information, see below.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The munmap_flags() function removes any mappings for pages in the address range starting at addr and continuing for len bytes, rounded up to the next multiple of the page size. Subsequent references to these pages cause a SIGSEGV signal to be set on the process.

If there are no mappings in the specified address range, then munmap_flags() has no effect.

Note: This function was added in the QNX Neutrino Core OS 6.3.2.

If you specify 0 for the flags, munmap_flags() is the same as munmap(). The flags change the way munmap_flags() behaves, as follows:

UNMAP_INIT_REQUIRED
POSIX initialization of the page to all zeros is required the next time the underlying physical memory is allocated.
UNMAP_INIT_OPTIONAL
Initialization of the underlying physical memory to zeros on its next allocation is optional. If you specify this flag, and you specify MAP_NOINIT when you next call mmap() for this physical memory, the POSIX requirement that the memory be zeroed is relaxed.

The memory-manager configuration (-m) option for procnto affects the default behavior of munmap_flags() (unless overridden by the flags argument), as detailed below:

-mi
Act as if UNMAP_INIT_REQUIRED were specified (the default).
-m~i
Act as if UNMAP_INIT_OPTIONAL were specified.

Returns:

0
Success.
-1
Failure; errno is set.

Errors:

EINVAL
The addresses in the specified range are outside the range allowed for the address space of a process.
ENOSYS
The function munmap_flags() isn't supported by this implementation.

Classification:

QNX Neutrino

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes