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}