Function report | 
Source Code:mm\gup.c | 
Create Date:2022-07-28 14:34:51 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:mmap_sem must be held on entry. If @nonblocking != NULL and* *@flags does not include FOLL_NOWAIT, the mmap_sem may be released.* If it is, *@nonblocking will be set to 0 and -EBUSY returned.
Proto:static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma, unsigned long address, unsigned int *flags, int *nonblocking)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct task_struct * | tsk | |
| struct vm_area_struct * | vma | |
| unsigned long | address | |
| unsigned int * | flags | |
| int * | nonblocking | 
| 621 | fault_flags = 0 | 
| 625 | If (flags & (ault in page | lock present pages )) == lock present pages Then Return -ENOENT | 
| 627 | If flags & check pte is writable Then fault_flags |= Fault was a write access | 
| 629 | If flags & we are working on non-current tsk/mm Then fault_flags |= aulting for non current tsk/mm | 
| 631 | If nonblocking Then fault_flags |= Retry fault if blocking | 
| 633 | If flags & a disk transfer is needed, start the IO* and return without waiting upon it Then fault_flags |= Retry fault if blocking | Don't drop mmap_sem and wait when retrying | 
| 635 | If flags & a retry, previous pass started an IO Then | 
| 637 | fault_flags |= Second try | 
| 640 | ret = handle_mm_fault(vma, address, fault_flags) | 
| 641 | If ret & VM_FAULT_ERROR Then | 
| 642 | err = NOTE on FOLL_LONGTERM:* FOLL_LONGTERM indicates that the page will be held for an indefinite time* period _often_ under userspace control | 
| 646 | BUG() | 
| 649 | If tsk Then | 
| 650 | If ret & VM_FAULT_MAJOR Then maj_flt++ | 
| 652 | Else min_flt++ | 
| 656 | If ret & VM_FAULT_RETRY Then | 
| 657 | If nonblocking && Not (fault_flags & Don't drop mmap_sem and wait when retrying ) Then nonblocking = 0 | 
| 659 | Return -EBUSY | 
| 671 | If ret & VM_FAULT_WRITE && Not (Flags, see mm.h. & VM_WRITE) Then flags |= rnal GUP flag | 
| 673 | Return 0 | 
| Name | Describe | 
|---|---|
| __get_user_pages | __get_user_pages() - pin user pages in memory*@tsk: task_struct of target task*@mm: mm_struct of target mm*@start: starting user address*@nr_pages: number of pages from start to pin*@gup_flags: flags modifying pin behaviour | 
| Source code conversion tool public plug-in interface  | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion  |