diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2024-07-24 14:05:14 -0700 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2024-08-01 14:21:49 +0200 |
commit | a8c230c881b24af0f6f3f9105f6cd0e7bc05b0de (patch) | |
tree | 30f0d3e3b1e6c4854ebd918225818e1c54c987f5 | |
parent | 9f349d02c6065f77b485526b3d76a637f6f079dc (diff) | |
download | glibc-a8c230c881b24af0f6f3f9105f6cd0e7bc05b0de.tar.gz glibc-a8c230c881b24af0f6f3f9105f6cd0e7bc05b0de.tar.xz glibc-a8c230c881b24af0f6f3f9105f6cd0e7bc05b0de.zip |
mremap: Update manual entry
Update mremap manual entry: 1. Change mremap to variadic. 2. Document MREMAP_FIXED and MREMAP_DONTUNMAP. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> (cherry picked from commit cb2dee4eccf46642eef588bee64f9c875c408f1c)
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | manual/llio.texi | 42 |
2 files changed, 36 insertions, 7 deletions
diff --git a/NEWS b/NEWS index af1306edb0..be072265fa 100644 --- a/NEWS +++ b/NEWS @@ -86,6 +86,7 @@ The following bugs are resolved with this release: is otherwise broken for arithmetic [31890] resolv: Allow short error responses to match any DNS query [31965] rseq extension mechanism does not work as intended + [31968] mremap implementation in C does not handle arguments correctly Version 2.39 diff --git a/manual/llio.texi b/manual/llio.texi index fae49d1433..a65230d612 100644 --- a/manual/llio.texi +++ b/manual/llio.texi @@ -1781,7 +1781,7 @@ There is no existing mapping in at least part of the given region. @end deftypefun -@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}) +@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */) @standards{GNU, sys/mman.h} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} @@ -1790,12 +1790,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped in the same @code{mmap} statement. A new mapping with the same characteristics will be returned with the length @var{new_length}. -One option is possible, @code{MREMAP_MAYMOVE}. If it is given in -@var{flags}, the system may remove the existing mapping and create a new -one of the desired length in another location. +Possible flags are -The address of the resulting mapping is returned, or @math{-1}. Possible -error codes include: +@table @code + +@item MREMAP_MAYMOVE +If it is given in @var{flags}, the system may remove the existing mapping +and create a new one of the desired length in another location. + +@item MREMAP_FIXED +If it is given in @var{flags}, @code{mremap} accepts a fifth argument, +@code{void *new_address}, which specifies a page-aligned address to +which the mapping must be moved. Any previous mapping at the address +range specified by @var{new_address} and @var{new_size} is unmapped. + +@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}. + +@item MREMAP_DONTUNMAP +If it is given in @var{flags}, @code{mremap} accepts a fifth argument, +@code{void *new_address}, which specifies a page-aligned address. Any +previous mapping at the address range specified by @var{new_address} and +@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the +kernel chooses the page-aligned address at which to create the mapping. +Otherwise, the kernel takes it as a hint about where to place the mapping. +The mapping at the address range specified by @var{old_address} and +@var{old_size} isn't unmapped. + +@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}. +@var{old_size} must be the same as @var{new_size}. This flag bit is +Linux-specific. + +@end table + +The address of the resulting mapping is returned, or @code{MAP_FAILED}. +Possible error codes include: @table @code @@ -1804,7 +1832,7 @@ There is no existing mapping in at least part of the original region, or the region covers two or more distinct mappings. @item EINVAL -The address given is misaligned or inappropriate. +Any arguments are inappropriate, including unknown @var{flags} values. @item EAGAIN The region has pages locked, and if extended it would exceed the |