syscall | 行为 | 条件 | 约束 | 备注 |
---|---|---|---|---|
mmap | create_vma | |||
populate_when_mmap | MAP_POPULATE | |||
lock_when_mmap | MAP_LOCKED | |||
write_to_disk_directly | MAP_SYNC | dax+MAP_SHARED_VALIDATE only | ||
growsdown_on_fault | MAP_GROWSDOWN | private+anon only | ||
resrv_hugetlb | MAP_HUGETLB, ~MAP_NORESERVE | |||
do_not_reserve_on_mmap | MAP_NORESERVE | |||
do_not_clear_anon_page | MAP_UNINITIALIZED | anon only | ||
unmap_addr_before_create | MAP_FIXED/FIXED_NO_REPLACE | |||
munmap | remove_mapping | |||
mremap | expand_mapping | oldlen < newlen | ||
shrink_mapping | oldlen > newlen | |||
move_mapping | oldlen< newlen + no_space + MREMAP_MAYMOVE | |||
move_but_not_unmap | MREMAP_DONTUNMAP | anon only, must have MREMAP_MAYMOVE | ||
unmap_addr_before_create | MREMAP_FIXED | must have MREMAP_MAYMOVE | ||
copy_shared_mapping | oldlen == 0 | shared only, must have MREMAP_MAY_MOVE | ||
mprotect | change_prot_of_mapping | |||
change_prot_down_to_mapping_start | PROT_GROWSDOWN | mapping created by MAP_GROWSDOWN | ||
change_prot_up_to_mapping_end | PROT_GROWSUP | |||
madvise | mark_mapping_normal/random/sequential | MADV_NORMAL/RANDOM/SEQUENTIAL | ||
swap_in/read_from_pagecache | MADV_WILLNEED | |||
unpopulate_mapping | MADV_DONTNEED | can not be VM_PFNMAP pages | ||
fallocate_mapping | MADV_REMOV | |||
no_copy_when_fork | MADV_DONTFORK | |||
copy_when_fork | MADV_DOFORK | |||
no_dump_when_coredump | MADV_DONTDUMP | |||
dump_when_coredump | MADV_DODUMP | |||
mark_mapping_freeable | MADV_FREE | private+anon only | ||
no_relink_when_fork | MADV_WIPEONFORK | |||
relink_when_fork | MADV_KEEPONFORK | |||
mark_mapping_cold | MADV_COLD | |||
mlock | lock_mapping | |||
mlock2 | lock_mapping_and_lock_on_fault | MLOCK_ONFAULT | ||
mlockall | lock_all_mapping | MCL_CURRENT | fork的时候不会继承mlock相关的flag和mlock状态 | |
lock_future_mapping | MCL_FUTURE | mremap产生的expand不会lock,maymove也不会lock,fixed也不lock | ||
lock_exist_mapping_and_lock_nonexist_fault | MCL_CURRENT|MCL_ONFAULT | 两次flag操作不一样,会导致前一个操作失效 | ||
lock_future_mapping_on_fault | MCL_FUTURE|MCL_ONFAULT | |||
lock_exist_mapping_and_lock_nonexist_fault_and_lock_future_mapping_on_fault | MCL_FUTURE|MCL_CURRENT|MCL_ONFAULT | |||
munlockall | unlock_all_mappings_and_clear_mlock_flags | |||
mincore | is_mapping_in_core | 可用来检测page是否在buffer/page cache | ||
msync | sync_mappings_to_file | MS_SYNC | MS_INVALIDATE实际上没啥用,只检查一下VM_LOCKED MS_ASYNC啥也不干 |
|
process_vm_readv | read_mappings_of_process | flags必须是0 | ||
process_vm_writev | write_mappings_of_process | |||
process_mavise | same as madvise | |||
brkk | shrink_brk | addr < curr_brk | ||
expand_brk | addr>curr_brk | 已有mapping会返回nomem | ||
shmat | ||||
shmget | ||||
shmop | ||||
swapon | ||||
prctl(SET_VMA_NAME) | ||||
pagefault | ||||
swap | ||||
migrate |