[rt-smart] fix competition on aspace (#7064)
* [mm] mmu operations should be wrapped by _aspace_bst_insert & _aspace_bst_remove to avoid competition on page table * [lwp] may not return null on failed
This commit is contained in:
parent
c11f5bb251
commit
dd2f1a795a
|
@ -362,8 +362,12 @@ void *lwp_map_user_phy(struct rt_lwp *lwp, void *map_va, void *map_pa,
|
|||
va = RT_NULL;
|
||||
LOG_W("%s", __func__);
|
||||
}
|
||||
else
|
||||
{
|
||||
va += offset;
|
||||
}
|
||||
|
||||
return va + offset;
|
||||
return va;
|
||||
}
|
||||
|
||||
rt_base_t lwp_brk(void *addr)
|
||||
|
|
|
@ -75,12 +75,12 @@ static inline void _varea_uninstall(rt_varea_t varea)
|
|||
|
||||
rt_varea_free_pages(varea);
|
||||
|
||||
rt_hw_mmu_unmap(aspace, varea->start, varea->size);
|
||||
rt_hw_tlb_invalidate_range(aspace, varea->start, varea->size, ARCH_PAGE_SIZE);
|
||||
|
||||
WR_LOCK(aspace);
|
||||
_aspace_bst_remove(aspace, varea);
|
||||
WR_UNLOCK(aspace);
|
||||
|
||||
rt_hw_mmu_unmap(aspace, varea->start, varea->size);
|
||||
rt_hw_tlb_invalidate_range(aspace, varea->start, varea->size, ARCH_PAGE_SIZE);
|
||||
}
|
||||
|
||||
int _init_lock(rt_aspace_t aspace)
|
||||
|
|
Loading…
Reference in New Issue