| 141 | } |
| 142 | |
| 143 | static void _pgmgr_pop_range(rt_varea_t varea, void *rm_start, void *rm_end) |
| 144 | { |
| 145 | void *page_va; |
| 146 | |
| 147 | RT_ASSERT(!((rt_ubase_t)rm_start & ARCH_PAGE_MASK)); |
| 148 | RT_ASSERT(!((rt_ubase_t)rm_end & ARCH_PAGE_MASK)); |
| 149 | while (rm_start != rm_end) |
| 150 | { |
| 151 | page_va = rt_hw_mmu_v2p(varea->aspace, rm_start); |
| 152 | |
| 153 | if (page_va != ARCH_MAP_FAILED) |
| 154 | { |
| 155 | page_va -= PV_OFFSET; |
| 156 | LOG_D("%s: free page %p", __func__, page_va); |
| 157 | rt_varea_unmap_page(varea, rm_start); |
| 158 | rt_pages_free(page_va, 0); |
| 159 | } |
| 160 | rm_start += ARCH_PAGE_SIZE; |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | static const char *_anon_get_name(rt_varea_t varea) |
| 165 | { |
no test coverage detected