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

Function _do_named_map

components/mm/mm_aspace.c:147–168  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145}
146
147static int _do_named_map(rt_aspace_t aspace, rt_varea_t varea, void *vaddr,
148 rt_size_t length, rt_size_t offset, rt_size_t attr)
149{
150 LOG_D("%s: va %p length %p", __func__, vaddr, length);
151 int err = RT_EOK;
152
153 /* it's ensured by caller that (void*)end will not overflow */
154 void *phyaddr = (void *)(offset << MM_PAGE_SHIFT);
155 void *ret;
156
157 attr = _get_effect_attr(aspace, varea);
158 ret = rt_hw_mmu_map(aspace, vaddr, phyaddr, length, attr);
159 if (ret == RT_NULL)
160 {
161 err = -RT_ERROR;
162 }
163
164 if (err == RT_EOK)
165 rt_hw_tlb_invalidate_range(aspace, vaddr, length, ARCH_PAGE_SIZE);
166
167 return err;
168}
169
170rt_inline void _do_page_fault(struct rt_aspace_fault_msg *msg, rt_size_t off,
171 void *vaddr, rt_mem_obj_t mem_obj,

Callers 3

_mm_aspace_map_phyFunction · 0.85
rt_varea_map_pageFunction · 0.85
rt_varea_map_rangeFunction · 0.85

Calls 3

_get_effect_attrFunction · 0.85
rt_hw_mmu_mapFunction · 0.50

Tested by

no test coverage detected