Home
March 21, 2010 12:33:30 AM EST
home
back print
MOVE_PAGES   (2) manpage
MOVE_PAGES
2
8 August 2006
Linux
Linux System Calls
  • NAME
      move_pages - move a set of pages of a process to a different NUMA node
  • SYNOPSIS
      
       #include <syscall.h>
       long move_pages(pid_t  pid , unsigned long  nr_pages ,
                        const void ** address ,                   const int * nodes , int * status ,                   int  flags );                                                                 
  • DESCRIPTION
      move_pages moves a set of pages in the address space of a executed process to a different
      NUMA node.
      The function can also be used to determine the nodes to which the pages are
      currently mapped.

      pid
      is the process whose pages will be moved.  The value
      0 specifies the current process.

      The argument
      nr_pages
      specifies the number of pages which would require moving.

      addresses
      is an array of addresses of pages which would require moving

      nodes
      is an array of numbers of nodes to move the corresponding pages to.
      If set to NULL,
      status
      is filled with current NUMA node IDs, but no migrations occur.

      The
      flags
      argument describes the type of pages which will be moved:
      MPOL_MF_MOVE
      Syscall will move only pages which are mapped only by the process
      pid.
      MPOL_MF_MOVE_ALL
      Syscall will move pages which are mapped by multiple processes too
      (this mode needs to have sufficient permissions).

      The
      status
      field is only valid if
      move_pages finished successfully. This field contains the status of the specified
      pages.
      If the
      nodes
      argument is
      NULL or the migration succeeded, it is set to the node ID.  Otherwise it contains
      a negative number, one of the following error codes:

      -EFAULT the specified address does not point to a valid mapping

      -ENOENT the page does not exist

      -EPERM the page can't be moved (it is mlocked)

      -EACCES the page is shared by multiple processes and the flag
      MPOL_MF_MOVE_ALL was not set

      -EBUSY the page could not be moved - it is busy now

      -EFAULT the page address is not valid

      -ENOMEM insufficient memory

      -EIO the page can't be written

      -EINVAL the page can't be moved because the file system does not implement the
      necessary interface

  • RETURN VALUE
      If
      nodes
      is not NULL,
      move_pages
      returns the number of valid migration requests which could not currently be
      performed.
      Otherwise it
      returns
      0.
      An error indication is returned on error.

  • ERRORS

      EACCES one of the nodes specified by the
      nodes
      argument is not allowed for the specified process.

      EINVAL the man pages to be moved are in kernel thread or
      the
      flag
      parameter is invalid.

      ENODEV one of the nodes specified by the
      nodes
      argument is not available.

      ENOENT there is no page which would be moved.

      EPERM   the flag is set to
      MPOL_MF_MOVE_ALL or
      pid
      doesn't specify the current process,
      and the process has insufficient privileges.

      ENOMEM insufficient memory

      E2BIG the number of pages to move is too big

      ESRCH the process
      pid
      can't be found



  • AVAILABILITY
      This syscall is implemented only on the i386 and IA-64 architectures since
      kernel 2.6.


Current Users: 24 © 1999-2009 PenguinSoft. All trademarks and copyrights on this page are owned by their respective companies. Linux is a trademark of Linus Torvalds.