Function report |
Source Code:mm\swapfile.c |
Create Date:2022-07-28 15:17:18 |
| Last Modify:2020-03-17 22:19:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:get_swap_pages
Proto:int get_swap_pages(int n_goal, swp_entry_t swp_entries[], int entry_size)
Type:int
Parameter:
| Type | Parameter | Name |
|---|---|---|
| int | n_goal | |
| swp_entry_t | swp_entries | |
| int | entry_size |
| 994 | size = Define swap_entry_size() as constant to let compiler to optimize* out some code if !CONFIG_THP_SWAP(entry_size) |
| 997 | n_ret = 0 |
| 1001 | WARN_ON_ONCE(n_goal > 1 && size == SWAPFILE_CLUSTER) |
| 1003 | avail_pgs = atomic_long_read( & nr_swap_pages) / size |
| 1007 | If n_goal > SWAP_BATCH Then n_goal = SWAP_BATCH |
| 1013 | atomic_long_sub(n_goal * size, & nr_swap_pages) |
| 1015 | spin_lock( & swap_avail_lock) |
| 1017 | start_over : |
| 1022 | spin_unlock( & swap_avail_lock) |
| 1024 | If Not dex of last free in swap_map || Not (SWP_USED etc: see above & SWP_WRITEOK) Then |
| 1025 | spin_lock( & swap_avail_lock) |
| 1028 | Go to nextsi |
| 1030 | WARN(!dex of last free in swap_map , "swap_info %d in list but !highest_bit\n", strange name for an index ) |
| 1033 | WARN(!(SWP_USED etc: see above & SWP_WRITEOK), "swap_info %d in list but !SWP_WRITEOK\n", strange name for an index ) |
| 1036 | __del_from_avail_list(si) |
| 1038 | Go to nextsi |
| 1040 | If size == SWAPFILE_CLUSTER Then |
| 1041 | If Not (SWP_USED etc: see above & SWP_FS) Then n_ret = swap_alloc_cluster(si, swp_entries) |
| 1043 | Else n_ret = scan_swap_map_slots(si, Flag page is cached, in first swap_map , n_goal, swp_entries) |
| 1047 | If n_ret || size == SWAPFILE_CLUSTER Then Go to check_out |
| 1049 | pr_debug("scan_swap_map of si %d failed to find offset\n", strange name for an index ) |
| 1052 | spin_lock( & swap_avail_lock) |
| 1053 | nextsi : |
| 1069 | spin_unlock( & swap_avail_lock) |
| 1071 | check_out : |
| 1072 | If n_ret < n_goal Then atomic_long_add((long)(n_goal - n_ret) * size, & nr_swap_pages) |
| 1075 | noswap : |
| 1076 | Return n_ret |
| Name | Describe |
|---|---|
| refill_swap_slots_cache | alled with swap slot cache's alloc lock held |
| get_swap_page |
| 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 |