| Function report | 
| Source Code: mm\ksm.c | Create Date:2022-07-28 15:41:42 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:scan_get_next_rmap_item
Proto:static struct rmap_item *scan_get_next_rmap_item(struct page **page)
Type:struct rmap_item
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct page ** | page | 
| 2224 | If list_empty - tests whether a list is empty*@head: the list to test. Then Return NULL | 
| 2228 | If slot == ksm_mm_head Then | 
| 2239 | lru_add_drain_all() | 
| 2247 | If Not Zeroed when merging across nodes is not allowed Then | 
| 2255 | If page Then Perform a free_page(), also freeing any swap cache associated with* this page if it is the last user of the page. | 
| 2257 | cond_resched() | 
| 2261 | When nid < ksm_nr_node_ids cycle root_unstable_tree[nid] = | 
| 2264 | spin_lock( & ksm_mmlist_lock) | 
| 2267 | spin_unlock( & ksm_mmlist_lock) | 
| 2272 | If slot == ksm_mm_head Then Return NULL | 
| 2274 | next_mm : | 
| 2275 | address = 0 | 
| 2280 | lock for reading | 
| 2287 | If Not (Flags, see mm.h. & KSM may merge identical pages ) Then Continue | 
| 2289 | If address < Our start address within vm_mm. Then address = Our start address within vm_mm. | 
| 2291 | If Not Serialized by page_table_lock Then address = The first byte after our end addresswithin vm_mm. | 
| 2297 | page = follow_page(vma, address, do get_page on page ) | 
| 2298 | If IS_ERR_OR_NULL( * page) Then | 
| 2304 | flush_anon_page(vma, * page, address) | 
| 2305 | flush_dcache_page( * page) | 
| 2306 | rmap_item = get_next_rmap_item(slot, rmap_list, address) | 
| 2308 | If rmap_item Then | 
| 2314 | lease a read lock | 
| 2315 | Return rmap_item | 
| 2319 | cond_resched() | 
| 2333 | spin_lock( & ksm_mmlist_lock) | 
| 2336 | If address == 0 Then | 
| 2354 | Else | 
| 2355 | lease a read lock | 
| 2363 | spin_unlock( & ksm_mmlist_lock) | 
| 2368 | If slot != ksm_mm_head Then Go to next_mm | 
| 2371 | seqnr++ | 
| 2372 | Return NULL | 
| Name | Describe | 
|---|---|
| ksm_do_scan | ksm_do_scan - the ksm scanner main worker function.*@scan_npages: number of pages we want to scan before we return. | 
| 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 |