版權所有 © 2014 tutorialspoint
#include <syscall.h> long move_pages(pid_t pid, unsigned long nr_pages, const void **address, const int *nodes, int *status, int flags);
pid 是將移動其頁面的程序。值0指定當前程序。
引數nr_pages指定需要移動的頁面數。
addresses 是需要移動的頁面的地址陣列。
nodes 是將相應頁面移動到的節點號陣列。如果設定為NULL,則status 將填充當前NUMA節點ID,但不會發生遷移。
flags 引數描述將移動的頁面的型別。
-EFAULT 指定的地址不指向有效的對映
-ENOENT 頁面不存在
-EPERM 頁面無法移動(已鎖定)
-EACCES 頁面由多個程序共享,並且未設定標誌MPOL_MF_MOVE_ALL
-EBUSY 頁面無法移動 - 它現在正忙
-EFAULT 頁面地址無效
-ENOMEM 記憶體不足
-EIO 頁面無法寫入
-EINVAL 由於檔案系統未實現必要的介面,因此無法移動頁面
錯誤情況下將返回錯誤指示。
EACCES nodes引數指定的節點之一對於指定的程序不允許。
EINVAL 要移動的頁面位於核心執行緒中,或者flag引數無效。
ENODEV nodes引數指定的節點之一不可用。
ENOENT 沒有要移動的頁面。
EPERM 標誌設定為MPOL_MF_MOVE_ALL或pid未指定當前程序,並且程序許可權不足。
ENOMEM 記憶體不足
E2BIG 要移動的頁面數過多
ESRCH 找不到程序pid。
廣告