Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:mm\ksm.c Create Date:2022-07-28 15:40:47
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:ry_to_merge_one_page - take two pages and merge them into one*@vma: the vma that holds the pte pointing to page*@page: the PageAnon page that we want to replace with kpage*@kpage: the PageKsm page that we want to map instead of page,

Proto:static int try_to_merge_one_page(struct vm_area_struct *vma, struct page *page, struct page *kpage)

Type:int

Parameter:

TypeParameterName
struct vm_area_struct *vma
struct page *page
struct page *kpage
1204  orig_pte = __pte(0)
1205  err = -EFAULT
1207  If page == kpage Then Return 0
1210  If Not PageAnon(page) Then Go to out
1220  If Not Return true if the page was successfully locked Then Go to out
1223  If PageTransCompound returns true for both transparent huge pages* and hugetlbfs pages, so it should only be called when it's known* that hugetlbfs pages aren't involved. Then
1224  If split_huge_page(page) Then Go to out_unlock
1234  If write_protect_page(vma, page, & orig_pte) == 0 Then
1235  If Not kpage Then
1241  set_page_stable_node(page, NULL)
1247  If Not PageDirty(page) Then SetPageDirty(page)
1249  err = 0
1250  Else if pages_identical(page, kpage) Then err = place_page - replace page in vma by new ksm page*@vma: vma that holds the pte pointing to page*@page: the page we are replacing by kpage*@kpage: the ksm page we replace page by*@orig_pte: the original value of the pte
1254  If Flags, see mm.h. & VM_LOCKED && kpage && Not err Then
1255  munlock_vma_page - munlock a vma page*@page: page to be unlocked, either a normal page or THP page head* returns the size of the page as a page mask (0 for normal page,* HPAGE_PMD_NR - 1 for THP head page)
1256  If Not PageMlocked(kpage) Then
1260  page = kpage
1264  out_unlock :
1265  lock_page - unlock a locked page*@page: the page* Unlocks the page and wakes up sleepers in ___wait_on_page_locked().* Also wakes sleepers in wait_on_page_writeback() because the wakeup* mechanism between PageLocked pages and PageWriteback pages is shared.
1266  out :
1267  Return err
Caller
NameDescribe
try_to_merge_with_ksm_pagery_to_merge_with_ksm_page - like try_to_merge_two_pages,* but no new kernel page is allocated: kpage must already be a ksm page.* This function returns 0 if the pages were merged, -EFAULT otherwise.
cmp_and_merge_pagemp_and_merge_page - first see if page can be merged into the stable tree;* if not, compare checksum to previous and if it's the same, see if page can* be inserted into the unstable tree, or merged with a page already there and