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

Function rt_aspace_control

components/mm/mm_aspace.c:1439–1462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1437}
1438
1439int rt_aspace_control(rt_aspace_t aspace, void *addr, enum rt_mmu_cntl cmd)
1440{
1441 int err;
1442 rt_varea_t varea;
1443
1444 WR_LOCK(aspace);
1445 varea = _aspace_bst_search(aspace, addr);
1446 WR_UNLOCK(aspace);
1447
1448 if (varea)
1449 {
1450 err = rt_hw_mmu_control(aspace, varea->start, varea->size, cmd);
1451 if (err == RT_EOK)
1452 {
1453 rt_hw_tlb_invalidate_range(aspace, varea->start, varea->size, ARCH_PAGE_SIZE);
1454 }
1455 }
1456 else
1457 {
1458 err = -RT_ENOENT;
1459 }
1460
1461 return err;
1462}
1463
1464int rt_aspace_traversal(rt_aspace_t aspace,
1465 int (*fn)(rt_varea_t varea, void *arg), void *arg)

Callers 1

aspace_control_tcFunction · 0.85

Calls 3

_aspace_bst_searchFunction · 0.70
rt_hw_mmu_controlFunction · 0.50

Tested by 1

aspace_control_tcFunction · 0.68