MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / test_varea_unmap_page

Function test_varea_unmap_page

examples/utest/testcases/mm/test_aspace_api.h:219–243  ·  view source on GitHub ↗

* @brief rt_varea_unmap_page * Requirements: cancel the page table entry */

Source from the content-addressed store, hash-verified

217 * Requirements: cancel the page table entry
218 */
219static void test_varea_unmap_page(void)
220{
221 /* Prepare environment */
222 const size_t buf_sz = 4 * ARCH_PAGE_SIZE;
223 rt_varea_t varea = _create_varea(buf_sz);
224 for (size_t i = 0; i < buf_sz; i += ARCH_PAGE_SIZE)
225 {
226 void *page = rt_pages_alloc(0);
227 uassert_true(!!page);
228 uassert_true(!rt_varea_map_page(varea, varea->start + i, page));
229
230 /* let page manager handle the free of page */
231 rt_varea_pgmgr_insert(varea, page);
232 uassert_true(rt_kmem_v2p(varea->start + i) == (page + PV_OFFSET));
233 }
234
235 /* test if unmap is success */
236 for (size_t i = 0; i < buf_sz; i += ARCH_PAGE_SIZE)
237 {
238 uassert_true(rt_varea_unmap_page(varea, varea->start + i) == RT_EOK);
239 uassert_true(rt_kmem_v2p(varea->start + i) == ARCH_MAP_FAILED);
240 }
241
242 uassert_true(!rt_aspace_unmap(&rt_kernel_space, varea->start));
243}
244
245/**
246 * @brief rt_varea_map_range

Callers 1

varea_map_tcFunction · 0.85

Calls 7

_create_vareaFunction · 0.85
rt_pages_allocFunction · 0.85
rt_varea_map_pageFunction · 0.85
rt_varea_pgmgr_insertFunction · 0.85
rt_kmem_v2pFunction · 0.85
rt_varea_unmap_pageFunction · 0.85
rt_aspace_unmapFunction · 0.85

Tested by

no test coverage detected