mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-10-16 23:40:13 +08:00
[mm] distinguish NULL and MAP_FAILED
This commit is contained in:
@@ -114,13 +114,13 @@ static void _user_do_page_fault(struct rt_varea *varea,
|
||||
{
|
||||
struct rt_lwp_objs *lwp_objs;
|
||||
lwp_objs = rt_container_of(varea->mem_obj, struct rt_lwp_objs, mem_obj);
|
||||
void *vaddr = ARCH_MAP_FAILED;
|
||||
|
||||
if (lwp_objs->source)
|
||||
{
|
||||
void *paddr = rt_hw_mmu_v2p(lwp_objs->source, msg->vaddr);
|
||||
if (paddr != ARCH_MAP_FAILED)
|
||||
{
|
||||
void *vaddr;
|
||||
vaddr = paddr - PV_OFFSET;
|
||||
|
||||
if (!(varea->flag & MMF_TEXT))
|
||||
@@ -176,22 +176,21 @@ static void _init_lwp_objs(struct rt_lwp_objs *lwp_objs, rt_aspace_t aspace)
|
||||
static void *_lwp_map_user(struct rt_lwp *lwp, void *map_va, size_t map_size,
|
||||
int text)
|
||||
{
|
||||
void *va = RT_NULL;
|
||||
void *va = map_va;
|
||||
int ret = 0;
|
||||
size_t flags = MMF_PREFETCH;
|
||||
if (text)
|
||||
flags |= MMF_TEXT;
|
||||
|
||||
rt_mem_obj_t mem_obj = &lwp->lwp_obj->mem_obj;
|
||||
va = map_va ? map_va : ARCH_MAP_FAILED;
|
||||
|
||||
ret = rt_aspace_map(lwp->aspace, &va, map_size, MMU_MAP_U_RWCB, flags,
|
||||
mem_obj, 0);
|
||||
if (ret != RT_EOK)
|
||||
{
|
||||
va = RT_NULL;
|
||||
LOG_I("lwp_map_user: failed to map %lx with size %lx", map_va,
|
||||
map_size);
|
||||
LOG_I("lwp_map_user: failed to map %lx with size %lx with errno %d", map_va,
|
||||
map_size, ret);
|
||||
}
|
||||
|
||||
return va;
|
||||
@@ -350,9 +349,6 @@ void *lwp_map_user_phy(struct rt_lwp *lwp, void *map_va, void *map_pa,
|
||||
map_size &= ~ARCH_PAGE_MASK;
|
||||
map_pa = (void *)((size_t)map_pa & ~ARCH_PAGE_MASK);
|
||||
|
||||
if (map_va == RT_NULL)
|
||||
map_va = ARCH_MAP_FAILED;
|
||||
|
||||
struct rt_mm_va_hint hint = {.flags = MMF_MAP_FIXED,
|
||||
.limit_range_size = lwp->aspace->size,
|
||||
.limit_start = lwp->aspace->start,
|
||||
|
Reference in New Issue
Block a user