* @brief rt_varea_unmap_page * Requirements: cancel the page table entry */
| 217 | * Requirements: cancel the page table entry |
| 218 | */ |
| 219 | static 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 |
no test coverage detected