move_pages() - Unix,Linux系统调用
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于TP  

move_pages() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

move_pages - 将进程的一组页移动到不同的NUMA节点

概要

#include <syscall.h> 
long move_pages(pid_t pid, unsigned long nr_pages, 
                const void **address, 
                const int *nodes, int *status, 
                int flags); 
                                                               

描述

move_pages 将已执行进程地址空间中的一组页移动到不同的NUMA节点。该函数也可用于确定当前映射页面的节点。

pid 是将移动其页面的进程。值0指定当前进程。

参数nr_pages指定需要移动的页面数。

addresses 是需要移动的页面的地址数组。

nodes 是将相应页面移动到的节点号数组。如果设置为NULL,则status 将填充当前NUMA节点ID,但不会发生迁移。

flags 参数描述将移动的页面的类型。

标签描述
MPOL_MF_MOVE
 系统调用将仅移动仅由进程pid映射的页面。
MPOL_MF_MOVE_ALL
 系统调用也将移动由多个进程映射的页面(此模式需要具有足够的权限)。

如果move_pages成功完成,则status字段才有效。此字段包含指定页面的状态。如果nodes参数为NULL或迁移成功,则将其设置为节点ID。否则,它包含一个负数,即以下错误代码之一:

-EFAULT 指定的地址不指向有效的映射

-ENOENT 页面不存在

-EPERM 页面无法移动(已锁定)

-EACCES 页面由多个进程共享,并且未设置标志MPOL_MF_MOVE_ALL

-EBUSY 页面无法移动 - 它现在正忙

-EFAULT 页面地址无效

-ENOMEM 内存不足

-EIO 页面无法写入

-EINVAL 由于文件系统未实现必要的接口,因此无法移动页面

返回值

如果nodes不为NULL,则move_pages返回当前无法执行的有效迁移请求数。否则返回0

错误情况下将返回错误指示。

错误

EACCES nodes参数指定的节点之一对于指定的进程不允许。

EINVAL 要移动的页面位于内核线程中,或者flag参数无效。

ENODEV nodes参数指定的节点之一不可用。

ENOENT 没有要移动的页面。

EPERM 标志设置为MPOL_MF_MOVE_ALLpid未指定当前进程,并且进程权限不足。

ENOMEM 内存不足

E2BIG 要移动的页面数过多

ESRCH 找不到进程pid

可用性

自内核2.6起,此系统调用仅在i386和IA-64架构上实现。

previous next Printer Friendly

广告


  

广告



广告