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

广告


  

广告



广告