| 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 |