POSIX_MADVISE - Linux手册页
时间:2019-08-20 18:00:59 来源:igfitidea点击:
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
posix_madvise-提供有关内存使用模式的建议
语法
#include <sys/mman.h> int posix_madvise(void *addr, size_t len, int advice);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
posix_madvise():
- _POSIX_C_SOURCE>= 200112L
说明
posix_madvise()函数使应用程序可以在地址范围(从addr开始并持续len个字节)中向系统建议有关内存使用的预期模式。系统可以自由使用此建议以提高内存访问的性能(或完全忽略建议),但是调用posix_madvise()不会影响指定范围内的内存访问语义。
建议参数为以下之一:
- POSIX_MADV_NORMAL
- 该应用程序对于指定地址范围的内存使用模式没有特殊建议。这是默认行为。
- POSIX_MADV_SEQUENTIAL
- 应用程序期望从低地址到高地址依次访问指定的地址范围。因此,该区域中的页面可以被提前读取,并且可以在访问后立即释放。
- POSIX_MADV_RANDOM
- 该应用程序希望随机访问指定的地址范围。因此,预读可能没有通常的有用。
- POSIX_MADV_WILLNEED
- 该应用程序希望在不久的将来访问指定的地址范围。因此,预先阅读可能是有益的。
- POSIX_MADV_DONTNEED
- 该应用程序希望它在不久的将来不会访问指定的地址范围。
返回值
成功时,posix_madvise()返回0。失败时,返回正错误号。
错误说明
- EINVAL
- addr不是系统页面大小的倍数,或者len是负数。
- EINVAL
- 建议无效。
- ENOMEM
- 指定范围内的地址部分或完全超出了呼叫者的地址空间。
版本
对posix_madvise()的支持最早出现在glibc 2.2版中。
遵循规范
POSIX.1-2001。
备注
如果len为0,则POSIX.1允许实现生成错误。在Linux上,允许将len指定为0(作为成功的无操作)。
在glibc中,此功能是使用madvise(2)实现的。但是,从glibc 2.6开始,POSIX_MADV_DONTNEED被视为无操作,因为对应的madvise(2)值MADV_DONTNEED具有破坏性的语义。
另外参见
madvise(2),posix_fadvise(2)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。