| Function report | 
| Source Code: mm\ksm.c | Create Date:2022-07-28 15:40:26 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:get_ksm_page: checks if the page indicated by the stable node* is still its ksm page, despite having held no reference to it.* In which case we can trust the content of the page, and it* returns the gotten page; but if the page has now been zapped,
Proto:static struct page *get_ksm_page(struct stable_node *stable_node, enum get_ksm_page_flags flags)
Type:struct page
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct stable_node * | stable_node | |
| enum get_ksm_page_flags | flags | 
| 703 | again : | 
| 705 | page = pfn_to_page(kpfn) | 
| 706 | If READ_ONCE( See page-flags.h for PAGE_MAPPING_FLAGS ) != expected_mapping Then Go to stale | 
| 728 | If Not PageSwapCache(page) Then Go to stale | 
| 730 | cpu_relax() | 
| 733 | If READ_ONCE( See page-flags.h for PAGE_MAPPING_FLAGS ) != expected_mapping Then | 
| 735 | Go to stale | 
| 738 | If flags == GET_KSM_PAGE_TRYLOCK Then | 
| 739 | If Not Return true if the page was successfully locked Then | 
| 743 | Else if flags == GET_KSM_PAGE_LOCK Then lock_page may only be called if we have the page's inode pinned. | 
| 746 | If flags != GET_KSM_PAGE_NOLOCK Then | 
| 747 | If READ_ONCE( See page-flags.h for PAGE_MAPPING_FLAGS ) != expected_mapping Then | 
| 750 | Go to stale | 
| 753 | Return page | 
| 755 | stale : | 
| 762 | smp_rmb() | 
| 766 | Return NULL | 
| Name | Describe | 
|---|---|
| remove_rmap_item_from_tree | Removing rmap_item from stable or unstable tree.* This function will clean the information from the stable/unstable tree. | 
| stable_node_dup | |
| __stable_node_chain | Like for get_ksm_page, this function can free the *_stable_node and* *_stable_node_dup if the returned tree_page is NULL | 
| stable_tree_search | stable_tree_search - search for page inside the stable tree* This function checks if there is a page inside the stable tree* with identical content to the page that we are scanning right now | 
| stable_tree_insert | stable_tree_insert - insert stable tree node pointing to new ksm page* into the stable tree.* This function returns the stable tree node just allocated on success,* NULL otherwise. | 
| scan_get_next_rmap_item | 
| 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 |