Skip to content

Commit

Permalink
[smart] feat: add unmap for null mapper (#9186)
Browse files Browse the repository at this point in the history
Do unmap before shrink so we don't see mapped entry on page table
insertion, which is not acceptable for riscv implementation of
architecture porting.

Changes:
- add un-mapping of pte on `_null_shrink()`

Signed-off-by: Shell <[email protected]>
  • Loading branch information
polarvid committed Jul 16, 2024
1 parent d8294de commit 1d78d11
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions components/lwp/lwp_user_mm.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,29 @@ static void _null_page_fault(struct rt_varea *varea,

static rt_err_t _null_shrink(rt_varea_t varea, void *new_start, rt_size_t size)
{
char *varea_start = varea->start;
void *rm_start;
void *rm_end;

if (varea_start == (char *)new_start)
{
rm_start = varea_start + size;
rm_end = varea_start + varea->size;
}
else /* if (varea_start < (char *)new_start) */
{
RT_ASSERT(varea_start < (char *)new_start);
rm_start = varea_start;
rm_end = new_start;
}

rt_varea_unmap_range(varea, rm_start, rm_end - rm_start);
return RT_EOK;
}

static rt_err_t _null_split(struct rt_varea *existed, void *unmap_start, rt_size_t unmap_len, struct rt_varea *subset)
{
rt_varea_unmap_range(existed, unmap_start, unmap_len);
return RT_EOK;
}

Expand Down

0 comments on commit 1d78d11

Please sign in to comment.