madvise、fadvise、posix_madvise和posix_fadvise函数的使用
系统调用madvise的作用:建议内核如何使用指定段的内存。函数原型如下:
#include <sys/mman.h> int madvise(void *addr, size_t length, int advice); |
参数advice的取值有如下几种:
MADV_NORMAL |
|
MADV_RANDOM |
|
MADV_SEQUENTIAL |
|
MADV_WILLNEED |
|
MADV_DONTNEED |
|
MADV_REMOVE |
2.6.16内核引入。 |
MADV_DONTFORK |
2.6.16内核引入。 |
MADV_DOFORK |
2.6.16内核引入。 |
MADV_HWPOISON |
2.6.32内核引入。 |
MADV_UNMERGEABLE |
2.6.32内核引入。 |
MADV_MERGEABLE |
2.6.32内核引入。 |
MADV_SOFT_OFFLINE |
2.6.33内核引入。 |
MADV_HUGEPAGE |
2.6.38内核引入。 |
MADV_NOHUGEPAGE |
2.6.38内核引入。 |
MADV_DONTDUMP |
3.4内核引入。 |
MADV_DODUMP |
3.4内核引入。 |
m表示memory,f表示file,因此madvise是针对内存,而fadvise是针对文件。
Posix也有个类似的函数posix_madvise和posix_fadvise:
#include <sys/mman.h> int posix_madvise(void *addr, size_t len, int advice);
#include <fcntl.h> int posix_fadvise(int fd, off_t offset, size_t len, int advice); |
更多详情请浏览:http://man7.org/linux/man-pages/man2/madvise.2.html,或执行man madvise命令。