mincore() - Unix、Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

mincore() - Unix、Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

mincore - 獲取頁面是否在記憶體中的資訊

語法

#include <unistd.h>
#include <sys/mman.h>

int mincore(void *start, size_t length, unsigned char *vec);

描述

mincore() 函式請求一個向量,描述檔案哪些頁面在記憶體中,並且可以無需磁碟訪問即可讀取。核心將為start地址之後的length位元組提供資料。返回時,核心將填充vec位元組,其中最低有效位指示頁面是否駐留在記憶體中。(其他位未定義,保留供將來使用。)當然,這只是一個快照:未鎖定在記憶體中的頁面隨時可能出現和消失,並且當此呼叫返回時,vec的內容可能已經過時。

為了使mincore() 成功返回,start必須位於頁面邊界上。呼叫者有責任向上舍入到最近的頁面。length引數不必是頁面大小的倍數。向量vec必須足夠大,以包含 (length+PAGE_SIZE-1) / PAGE_SIZE 位元組。可以透過getpagesize(2)獲取頁面大小。

返回值

成功時,mincore() 返回零。發生錯誤時,返回 -1,並且errno被相應地設定。

錯誤

EAGAIN 核心暫時資源不足
標籤描述
EFAULT vec 指向無效地址
EINVAL start 不是頁面大小的倍數。
ENOMEM len 大於 (TASK_SIZE - start)。(如果為len指定了負值,則可能會發生這種情況,因為該值將被解釋為一個大的無符號整數。)在 Linux 2.6.11 及更早版本中,對於此情況返回錯誤EINVAL
ENOMEM addressaddress + length 包含未對映的記憶體或不是檔案一部分的記憶體。

錯誤

到目前為止(Linux 2.6.5),mincore() 不會為 MAP_PRIVATE 對映返回正確的資訊。

符合標準

mincore() 未在 POSIX.1-2001 中指定,並且並非所有 Unix 實現中都可用。

歷史

mincore() 函式首次出現在 4.4BSD 中。

可用性

自 Linux 2.3.99pre1 和 glibc 2.2 起。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.