remap_file_pages() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix入門
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

remap_file_pages() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

remap_file_pages - 建立非線性檔案對映

概要

#include <sys/mman.h>

int remap_file_pages(void *start, size_t size, int prot, ssize_t pgoff, int flags);

描述

remap_file_pages() 系統呼叫用於建立非線性對映,即檔案頁面以非順序方式對映到記憶體中的對映。與重複呼叫mmap(2)相比,使用remap_file_pages() 的優勢在於,前者不需要核心建立額外的VMA(虛擬記憶體區域)資料結構。

要建立非線性對映,我們執行以下步驟

標籤描述
1. 使用mmap() 建立對映(最初是線性的)。此對映必須使用MAP_SHARED標誌建立。
2. 使用一個或多個remap_file_pages() 呼叫來重新排列對映頁面和檔案頁面之間的對應關係。可以將檔案的同一頁面對映到對映區域內的多個位置。
pgoffsize 引數指定要重新定位到對映中的檔案區域:pgoff 是以系統頁面大小為單位的檔案偏移量;size 是區域的長度(以位元組為單位)。

start 引數有兩個用途。首先,它標識我們要重新排列其頁面的對映。因此,start 必須是之前透過呼叫mmap() 對映的區域內的地址。其次,start 指定由pgoffsize 標識的檔案頁面將放置到的地址。

startsize 中指定的值應為系統頁面大小的倍數。如果不是,則核心會將兩者的值都向下舍入到最接近的頁面大小的倍數。

prot 引數必須指定為 0。

flags 引數與mmap() 的含義相同,但MAP_NONBLOCK以外的所有標誌都會被忽略。

返回值

成功時,remap_file_pages() 返回 0。出錯時,返回 -1,並適當地設定errno

註釋

remap_file_pages() 系統調用出現在 Linux 2.5.46 中。

錯誤

標籤描述
EINVAL start 不引用使用MAP_SHARED標誌建立的有效對映。
EINVAL startsizeprotpgoff 無效。

符合標準

remap_file_pages() 系統呼叫是 Linux 特定的。

參見



previous next Printer Friendly

廣告


  

廣告



廣告