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

Function rt_aspace_map_static

components/mm/mm_aspace.c:712–750  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

710}
711
712int rt_aspace_map_static(rt_aspace_t aspace, rt_varea_t varea, void **addr,
713 rt_size_t length, rt_size_t attr, mm_flag_t flags,
714 rt_mem_obj_t mem_obj, rt_size_t offset)
715{
716 int err;
717
718 if (!aspace || !varea || !addr || !mem_obj || length == 0 ||
719 _not_in_range(flags, *addr, length, aspace->start, aspace->size))
720 {
721 err = -RT_EINVAL;
722 LOG_W("%s: Invalid input", __func__);
723 }
724 else if (_not_support(flags))
725 {
726 LOG_W("%s: no support flags", __func__);
727 err = -RT_ENOSYS;
728 }
729 else
730 {
731 varea->size = length;
732 varea->start = *addr;
733 flags |= MMF_STATIC_ALLOC;
734
735 /**
736 * todo: fix if mapping expand, the static varea is not used at all
737 */
738 err = _mm_aspace_map(aspace, &varea, addr, length, attr, flags, mem_obj, offset);
739 }
740
741 if (err != RT_EOK)
742 {
743 *addr = NULL;
744 }
745 else
746 {
747 *addr = varea->start;
748 }
749 return err;
750}
751
752int _mm_aspace_map_phy(rt_aspace_t aspace, rt_varea_t varea,
753 rt_mm_va_hint_t hint, rt_size_t attr, rt_size_t pa_off,

Callers 5

arch_kuser_initFunction · 0.85
rt_page_initFunction · 0.85
rt_hw_init_mmu_tableFunction · 0.85
aspace_delete_tcFunction · 0.85
_create_vareaFunction · 0.85

Calls 3

_not_in_rangeFunction · 0.85
_not_supportFunction · 0.85
_mm_aspace_mapFunction · 0.85

Tested by 2

aspace_delete_tcFunction · 0.68
_create_vareaFunction · 0.68