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

本文详细介绍了madvise系统调用的功能及其参数advice的多种取值,包括MADV_NORMAL、MADV_RANDOM等,并提供了函数原型及各内核版本引入的不同advice类型。
1706

被折叠的 条评论
为什么被折叠?



