系统调用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命令。