| 函数逻辑报告 | 
| Source Code: fs\userfaultfd.c | Create Date:2022-07-29 10:52:30 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:The locking rules involved in returning VM_FAULT_RETRY depending on* FAULT_FLAG_ALLOW_RETRY, FAULT_FLAG_RETRY_NOWAIT and* FAULT_FLAG_KILLABLE are not straightforward
函数原型:vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason)
返回类型:vm_fault_t
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct vm_fault * | vmf | |
| unsigned long | reason | 
| 357 | ret等于VM_FAULT_SIGBUS | 
| 372 | 如果flags按位与Getting shut down 按位或Dumped core 的值则转到:out | 
| 387 | VM_BUG_ON(reason & ~(missing pages tracking | wrprotect pages tracking )) | 
| 388 | VM_BUG_ON(!(reason & missing pages tracking ) ^ !!(reason & wrprotect pages tracking )) | 
| 398 | 如果此条件成立可能性小(为编译器优化)(READ_ONCE(leased ))则 | 
| 415 | ret等于VM_FAULT_NOPAGE | 
| 416 | 转到:out | 
| 429 | 如果此条件成立可能性小(为编译器优化)(!(flags & Retry fault if blocking ))则 | 
| 444 | 转到:out | 
| 451 | ret等于VM_FAULT_RETRY | 
| 452 | 如果flags按位与Don't drop mmap_sem and wait when retrying 则转到:out | 
| 463 | waken = false | 
| 471 | spin_lock_irq( & lock) | 
| 483 | spin_unlock_irq( & lock) | 
| 488 | 否则must_wait等于Same functionality as userfaultfd_must_wait below with modifications for* hugepmd ranges. | 
| 494 | 如果此条件成立可能性大(为编译器优化)(must_wait && !READ_ONCE(leased ) && (return_to_userland ? !signal_pending(当前进程) : !fatal_signal_pending(当前进程)))则 | 
| 498 | 进程调度 | 
| 499 | ret或等于VM_FAULT_MAJOR | 
| 516 | 如果READ_ONCE(waken)或READ_ONCE(leased )或如果return_to_userland则signal_pending(当前进程)否则fatal_signal_pending(当前进程)则退出 | 
| 521 | 进程调度 | 
| 527 | 如果return_to_userland则 | 
| 528 | 如果signal_pending(当前进程)且非fatal_signal_pending(当前进程)则 | 
| 546 | lock for reading | 
| 547 | ret等于VM_FAULT_NOPAGE | 
| 564 | 如果非链表为空且不修改则 | 
| 580 | out : | 
| 581 | 返回:ret | 
| 名称 | 描述 | 
|---|---|
| do_anonymous_page | We enter with non-exclusive mmap_sem (to exclude vma changes,* but allow concurrent faults), and pte mapped but not yet locked.* We return with mmap_sem still held, but pte unmapped and unlocked. | 
| hugetlb_no_page | |
| __do_huge_pmd_anonymous_page | |
| do_huge_pmd_anonymous_page | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |