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

Function rt_aspace_load_page

components/mm/mm_aspace.c:1299–1326  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1297}
1298
1299int rt_aspace_load_page(rt_aspace_t aspace, void *addr, rt_size_t npage)
1300{
1301 int err = RT_EOK;
1302 rt_varea_t varea;
1303 char *end = (char *)addr + (npage << ARCH_PAGE_SHIFT);
1304
1305 WR_LOCK(aspace);
1306 varea = _aspace_bst_search(aspace, addr);
1307 WR_UNLOCK(aspace);
1308
1309 if (!varea)
1310 {
1311 LOG_W("%s: varea not exist(addr=%p)", __func__, addr);
1312 err = -RT_ENOENT;
1313 }
1314 else if ((char *)addr >= end || (rt_size_t)addr & ARCH_PAGE_MASK ||
1315 _not_in_range(MMF_MAP_FIXED, addr, npage << ARCH_PAGE_SHIFT,
1316 varea->start, varea->size))
1317 {
1318 LOG_W("%s: Unaligned parameter or out of range", __func__);
1319 err = -RT_EINVAL;
1320 }
1321 else
1322 {
1323 err = _do_prefetch(aspace, varea, addr, npage << ARCH_PAGE_SHIFT);
1324 }
1325 return err;
1326}
1327
1328int rt_varea_map_page(rt_varea_t varea, void *vaddr, void *page)
1329{

Callers 2

rt_page_initFunction · 0.85
_load_mpr_areaFunction · 0.85

Calls 3

_not_in_rangeFunction · 0.85
_do_prefetchFunction · 0.85
_aspace_bst_searchFunction · 0.70

Tested by

no test coverage detected