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 |