starry_api/imp/mm/
brk.rs

1use axerrno::LinuxResult;
2use axtask::{TaskExtRef, current};
3
4pub fn sys_brk(addr: usize) -> LinuxResult<isize> {
5    let task = current();
6    let process_data = task.task_ext().process_data();
7    let mut return_val: isize = process_data.get_heap_top() as isize;
8    let heap_bottom = process_data.get_heap_bottom() as usize;
9    if addr != 0 && addr >= heap_bottom && addr <= heap_bottom + axconfig::plat::USER_HEAP_SIZE {
10        process_data.set_heap_top(addr);
11        return_val = addr as isize;
12    }
13    Ok(return_val)
14}