Function report |
Source Code:mm\khugepaged.c |
Create Date:2022-07-28 16:07:08 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:khugepaged_scan_mm_slot
Proto:static unsigned int khugepaged_scan_mm_slot(unsigned int pages, struct page **hpage)__releases(&khugepaged_mm_lock) __acquires(&khugepaged_mm_lock)
Type:unsigned int
Parameter:
Type | Parameter | Name |
---|---|---|
unsigned int | pages | |
struct page ** | hpage |
1928 | progress = 0 |
1931 | lockdep_assert_held( & khugepaged_mm_lock) |
1935 | Else |
1938 | address = 0 |
1941 | spin_unlock( & khugepaged_mm_lock) |
1949 | vma = NULL |
1950 | If Value for the false possibility is greater at compile time(!rylock for reading -- returns 1 if successful, 0 if contention) Then Go to breakouterloop_mmap_sem |
1952 | If Value is more likely to compile time(!khugepaged_test_exit(mm)) Then vma = Look up the first VMA which satisfies addr < vm_end, NULL if none. |
1955 | progress++ |
1959 | cond_resched() |
1961 | progress++ |
1962 | Break |
1964 | If Not hugepage_vma_check(vma, Flags, see mm.h. ) Then |
1977 | VM_BUG_ON(address & ~HPAGE_PMD_MASK) |
1981 | cond_resched() |
1982 | If Value for the false possibility is greater at compile time(khugepaged_test_exit(mm)) Then Go to breakouterloop |
1990 | pgoff = linear_page_index(vma, address) |
1993 | If shmem_file(File we map to (can be NULL). ) && Not shmem_huge_enabled(vma) Then Go to skip |
1996 | file = get_file(File we map to (can be NULL). ) |
1997 | lease a read lock |
1998 | ret = 1 |
1999 | khugepaged_scan_file(mm, file, pgoff, hpage) |
2001 | Else |
2007 | address += HPAGE_PMD_SIZE |
2008 | progress += HPAGE_PMD_NR |
2009 | If ret Then Go to breakouterloop_mmap_sem |
2012 | If progress >= pages Then Go to breakouterloop |
2016 | breakouterloop : |
2017 | lease a read lock |
2018 | breakouterloop_mmap_sem : |
2020 | spin_lock( & khugepaged_mm_lock) |
2026 | If khugepaged_test_exit(mm) || Not vma Then |
2036 | address = 0 |
2037 | Else |
2038 | mm_slot = NULL |
2039 | khugepaged_full_scans++ |
2042 | collect_mm_slot(mm_slot) |
2045 | Return progress |
Name | Describe |
---|---|
khugepaged_do_scan |
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 |