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

廣告


  

廣告



廣告