munmap(2) [opensolaris man page]
munmap(2) System Calls munmap(2) NAME
munmap - unmap pages of memory SYNOPSIS
#include <sys/mman.h> int munmap(void *addr, size_t len); DESCRIPTION
The munmap() function removes the mappings for pages in the range [addr, addr + len), rounding the len argument up to the next multiple of the page size as returned by sysconf(3C). If addr is not the address of a mapping established by a prior call to mmap(2), the behavior is undefined. After a successful call to munmap() and before any subsequent mapping of the unmapped pages, further references to these pages will result in the delivery of a SIGBUS or SIGSEGV signal to the process. The mmap(2) function often performs an implicit munmap(). RETURN VALUES
Upon successful completion, munmap() returns 0; otherwise, it returns -1 and sets errno to indicate an error. ERRORS
The munmap() function will fail if: EINVAL The addr argument is not a multiple of the page size as returned by sysconf(3C); addresses in the range [addr, addr + len) are outside the valid range for the address space of a process; or the len argument has a value less than or equal to 0. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ SEE ALSO
mmap(2), sysconf(3C), attributes(5), standards(5) SunOS 5.11 5 Jan 1998 munmap(2)
Check Out this Related Man Page
MUNMAP(2) BSD System Calls Manual MUNMAP(2) NAME
munmap -- remove a mapping SYNOPSIS
#include <sys/mman.h> int munmap(void *addr, size_t len); DESCRIPTION
The munmap() system call deletes the mappings for the specified address range, causing further references to addresses within the range to generate invalid memory references. DIRTY PAGE HANDLING
How munmap() handles a dirty page, depends on what type of memory is being unmapped: [Anonymous] If the memory is anonymous memory and if the last reference is going away, then the contents are discarded by definition of anonymous memory. [System V Shared] If the memory mapping was created using System V shared memory, then the contents persist until the System V memory region is destroyed or the system is rebooted. [File mapping] If the mapping maps data from a file (MAP_SHARED), then the memory will eventually be written back to disk if it's dirty. This will happen automatically at some point in the future (implementation dependent). Note: to force the memory to be written back to the disk, use msync(2). If there are still other references to the memory when the munmap is done, then nothing is done to the memory itself and it may be swapped out if need be. The memory will continue to persist until the last reference goes away (except for System V shared memory in which case, see above). RETURN VALUES
Upon successful completion, munmap returns zero. Otherwise, a value of -1 is returned and errno is set to indicate the error. ERRORS
munmap() will fail if: [EINVAL] The addr parameter was not page aligned (i.e., a multiple of the page size). [EINVAL] The len parameter was negative or zero. [EINVAL] Some part of the region being unmapped is not part of the currently valid address space. LEGACY SYNOPSIS
#include <sys/types.h> #include <sys/mman.h> The include file <sys/types.h> is necessary. int munmap(caddr_t addr, size_t len); The type of addr has changed. SEE ALSO
getpagesize(3), msync(2), munmap(2), mprotect(2), madvise(2), mincore(2), compat(5) HISTORY
The munmap() function first appeared in 4.4BSD. BSD
October 16, 2008 BSD