Unmap previously mapped addresses, exercising more control than possible with munmap()
#include <sys/mman.h>
int munmap_flags( void * addr,
size_t len,
unsigned flags );
- addr
- The beginning of the range of addresses that you want to unmap.
- len
- The length of the range of addresses, in bytes.
- flags
- Use the following values:
- 0
- Behave the same as munmap().
- UNMAP_INT_REQUIRED
- POSIX initialization of the page to all zeros is required the next time
the underlying physical memory is allocated.
- UNMAP_INT_OPTIONAL
- Initialization of the underlying physical memory to zeros on its next
allocation is optional.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
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.
|
This function was added in the QNX Neutrino Core OS 6.3.2. |
There are some interactions of the flags argument with the
MAP_NOINIT flag of the
mmap()
function as well as
procnto,
as detailed below:
- The mmap() function has a new flag, MAP_NOINIT.
When specified, the POSIX requirement that the memory be zeroed is
relaxed.
The physical memory being used for this allocation must have been
previously freed with UNMAP_INIT_OPTIONAL for this flag
to have any effect.
- The procnto command line now has an
-mmemmgr_configuration option.
The memmgr_configuration string has a sequence of
configuration options to enable (or if preceeded with a ~
character, disable) memory-manager aspects.
The configuation options are:
- i
- munmap_flags() (with flags parameter as zero) acts as if UNMAP_INIT_REQUIRED
were specified (the default).
- ~i
- munmap_flags() (with flags parameter as zero) acts as if UNMAP_INIT_OPTIONAL
were specified.
- 0
- Success.
- -1
- Failure; errno is set.
- 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.
QNX Neutrino
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
mmap(),
mprotect(),
munmap(),
shm_open(),
shm_unlink()
procnto
in the Utilities Reference
“Initializing allocated memory”
in the Interprocess Communication (IPC) chapter of the
System Architecture guide