diff --git a/man2/mbind.2 b/man2/mbind.2 index ac2351f21..1d1ce7463 100644 --- a/man2/mbind.2 +++ b/man2/mbind.2 @@ -117,6 +117,35 @@ if the existing pages in the mapping don't follow the policy. In 2.6.16 or later the kernel will also try to move pages to the requested node with this flag. +If +.B MPOL_MF_MOVE +is passed in +.IR flags , +then an attempt will be made to +move all the pages in the mapping so that they follow the policy. +Pages that are shared with other processes are not moved. +If +.B MPOL_MF_STRICT +is also specified, then the call will fail with the error +.B EIO +if some pages could not be moved. + +If +.B MPOL_MF_MOVE_ALL +is passed in +.IR flags , +then all pages in the mapping will be moved regardless of whether +other processes use the pages. +The calling process must be privileged +.RB ( CAP_SYS_RESOURCE ) +.\" FIXME This may yet be changed to CAP_SYS_NICE in 2.6.16. +to use this flag. +If +.B MPOL_MF_STRICT +is also specified, then the call will fail with the error +.B EIO +if some pages could not be moved. + .\" FIXME 2.6.16-rc1 adds MPOL_MF_MOVE and MPOL_MF_MOVE_ALL. .\" These will need to be documented .SH RETURN VALUE @@ -170,6 +199,9 @@ that does not follow the policy. .SH NOTES NUMA policy is not supported on file mappings. +.B MPOL_MF_STRICT +is ignored on huge page mappings right now. + It is unfortunate that the same flag, .BR MPOL_DEFAULT , has different effects for @@ -203,9 +235,14 @@ Support for huge page policy was added with 2.6.16. For interleave policy to be effective on huge page mappings the policied memory needs to be tens of megabytes or larger. +.B MPOL_MF_MOVE +and +.B MPOL_MF_MOVE_ALL +are only available on Linux 2.6.16 and later. + These system calls should not be used directy. Instead, the higher level interface provided by the -.BR numa (3) +h.BR numa (3) functions in the .I numactl package is recommended.