madvise(2) System Calls Manual madvise(2) madvise - (libc -lc) #include int madvise(size_t size; void addr[size], size_t size, int advice); glibc ( feature_test_macros(7)): madvise(): glibc 2.19: _DEFAULT_SOURCE glibc 2.19 : _BSD_SOURCE madvise() addr size. madvise() addr . size . . advice "" . ( madvise() POSIX.) advice . advice . advice ( MADV_DONTNEED) . advice posix_madvise(3) POSIX MADV_DONTNEED. advice : MADV_NORMAL . . MADV_RANDOM . ( .) MADV_SEQUENTIAL . ( .) MADV_WILLNEED . ( .) MADV_DONTNEED . ( .) MADV_DONTNEED : ( shmem System V ) . MADV_DONTNEED . . (RSS) . MADV_DONTNEED VM_PFNMAP. ( VM_PFNMAP . .) Huge TLB 5.18. Huge TLB Huge TLB Huge TLB . advice posix_madvise(3) POSIX madvise() . . MADV_REMOVE ( 2.6.16) . ( fallocate(2)). . . VM_PFNMAP. tmpfs(5) MADV_REMOVE 3.5 FALLOC_FL_PUNCH_HOLE fallocate(2) MADV_REMOVE. MADV_REMOVE EOPNOTSUPP. Huge TLB 4.3. MADV_DONTFORK ( 2.6.16) fork(2). fork(2). ( (DMA) .) MADV_DOFORK ( 2.6.16) MADV_DONTFORK fork(2). MADV_HWPOISON ( 2.6.32) addr size . (CAP_SYS_ADMIN). SIGBUS . CONFIG_MEMORY_FAILURE. MADV_MERGEABLE ( 2.6.32) (KSM) addr size. . ( ). KSM ( mmap(2)). KSM ( KVM). . Documentation/admin-guide/mm/ksm.rst . MADV_MERGEABLE MADV_UNMERGEABLE CONFIG_KSM. MADV_UNMERGEABLE ( 2.6.32) MADV_MERGEABLE KSM addr size. MADV_SOFT_OFFLINE ( 2.6.33) addr size . ( ) ( ). MADV_SOFT_OFFLINE ( ) . CONFIG_MEMORY_FAILURE. MADV_HUGEPAGE ( 2.6.38) (THP) addr size. . ( posix_memalign(2)). ( QEMU). ( 2 2 4 ). Documentation/admin-guide/mm/transhuge.rst . MADV_HUGEPAGE MADV_HUGEPAGE . MADV_HUGEPAGE . THP . MADV_HUGEPAGE . 5.4 ( mmap(2)) shmem . . -- tmpfs ( tmpfs(2))-- . tmpfs . VMA VM_NOHUGEPAGE VM_HUGETLB VM_IO VM_DONTEXPAND VM_MIXEDMAP VM_PFNMAP DAX ( DAX ). PR_SET_THP_DISABLE PR_THP_DISABLE_EXCEPT_ADVISED ( prctl(2)). MADV_HUGEPAGE MADV_NOHUGEPAGE MADV_COLLAPSE CONFIG_TRANSPARENT_HUGEPAGE /shmem CONFIG_READ_ONLY_THP_FOR_FS. MADV_NOHUGEPAGE ( 2.6.38) addr size . MADV_COLLAPSE ( 6.1) (THPs). MADV_COLLAPSE . MADV_COLLAPSE ( mmap(2)) shmem . MADV_HUGEPAGE THP. VMAs VMA . / . MADV_COLLAPSE . / . PTE . 0 . / . MADV_COLLAPSE sysfs ( sysfs(5)) /sys/kernel/mm/transparent_hugepage THP . Documentation/admin-guide/mm/transhuge.rst . MADV_COLLAPSE tmpfs huge= tmpfs. / VMA ( VM_NOHUGEPAGE). NUMA . / THPs PMD . . / errno. MADV_DONTDUMP ( 3.4) addr size (core dump). . MADV_DONTDUMP /proc/pid/coredump_filter ( core(5)). MADV_DODUMP ( 3.4) MADV_DONTDUMP . MADV_FREE ( 4.5) addr size. . . MADV_FREE ( ) . . . . MADV_FREE ( mmap(2)). 4.12 (swapless) . MADV_WIPEONFORK ( 4.14) fork(2). ( PRNG ) . MADV_WIPEONFORK ( mmap(2)). fork(2) MADV_WIPEONFORK . execve(2). MADV_KEEPONFORK ( 4.14) MADV_WIPEONFORK . MADV_COLD ( 5.4) . . . . MADV_PAGEOUT ( 5.4) . . . . . MADV_POPULATE_READ ( 5.14) . MAP_POPULATE MADV_POPULATE_READ ( ) . . . SIGBUS . MADV_POPULATE_READ . MADV_POPULATE_READ . MADV_POPULATE_READ VM_PFNMAP VM_IO memfd_secret(2). MADV_POPULATE_READ . MADV_POPULATE_WRITE ( 5.14) . MAP_POPULATE MADV_POPULATE_WRITE ( ) . (CoW). . SIGBUS . MADV_POPULATE_WRITE ( ) . MADV_POPULATE_WRITE . MADV_POPULATE_WRITE VM_PFNMAP VM_IO memfd_secret(2). MADV_POPULATE_WRITE . MADV_GUARD_INSTALL ( 6.13) addr size SIGSEGV. MADV_GUARD_INSTALL . 6.15 . 6.15 . mlock hugetlb . VM_PFNMAP VM_IO memfd_secret(2). EINVAL . PROT_NONE . . . fork ( MADV_WIPEONFORK) MADV_DONTNEED MADV_FREE MADV_PAGEOUT MADV_COLD. mlock(2) MADV_POPULATE_READ MADV_POPULATE_WRITE. ( ). mremap(2) . MADV_GUARD_REMOVE . MADV_GUARD_REMOVE ( 6.13) addr size. . MADV_GUARD_INSTALL mlock() EINVAL . . . . madvise() . -1 errno . EACCES advice MADV_REMOVE . EAGAIN . EBADF . EBUSY ( MADV_COLLAPSE) cgroup: cgroup. EBUSY ( MADV_SOFT_OFFLINE) (offline). . EFAULT advice MADV_POPULATE_READ MADV_POPULATE_WRITE (prefaulting) SIGBUS ( MADV_HWPOISON ). EINVAL addr size . EINVAL advice . EINVAL advice MADV_COLD MADV_PAGEOUT Huge TLB VM_PFNMAP. EINVAL advice MADV_DONTNEED MADV_REMOVE Huge TLB VM_PFNMAP. EINVAL advice MADV_MERGEABLE MADV_UNMERGEABLE CONFIG_KSM. EINVAL advice MADV_FREE MADV_WIPEONFORK Huge TLB MAP_SHARED VM_PFNMAP. EINVAL advice MADV_POPULATE_READ MADV_POPULATE_WRITE VM_IO VM_PFNMAP memfd_secret(2). EINVAL advice MADV_GUARD_INSTALL MADV_GUARD_REMOVE . EIO ( MADV_WILLNEED) (resident set size) . ENOMEM ( MADV_WILLNEED) : . ENOMEM ( MADV_COLLAPSE) : . ENOMEM . ENOMEM advice MADV_POPULATE_READ MADV_POPULATE_WRITE (prefaulting) . EPERM advice MADV_HWPOISON CAP_SYS_ADMIN. EHWPOISON advice MADV_POPULATE_READ MADV_POPULATE_WRITE (prefaulting) ( MADV_HWPOISON ). advice . Conventional advice flags . POSIX.1-2001 posix_madvise(3) POSIX_MADV_NORMAL POSIX_MADV_RANDOM POSIX_MADV_SEQUENTIAL POSIX_MADV_WILLNEED POSIX_MADV_DONTNEED . addr size . madvise() ( ENOMEM ). madvise(0, 0, advice) advice . . 4.4BSD. 3.18 CONFIG_ADVISE_SYSCALLS. getrlimit(2), memfd_secret(2), mincore(2), mmap(2), mprotect(2), msync(2), munmap(2), prctl(2), process_madvise(2), posix_madvise(3), core(5) 3 . . : . 6.18 8 2026 madvise(2)