Add sys_brk.
This commit is contained in:
parent
e894942e52
commit
e61e1b16b4
|
@ -4,7 +4,8 @@
|
|||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
void* syscall_table;
|
||||
void *syscall_table;
|
||||
void *_brk;
|
||||
|
||||
int sys_read(int fd, char* buf, unsigned count, void, void, void)
|
||||
{
|
||||
|
@ -26,6 +27,23 @@ int sys_lseek(int fd, int offset, int whence, void, void, void)
|
|||
return lseek(fd, offset, whence);
|
||||
}
|
||||
|
||||
int sys_brk(void* addr, void, void, void, void, void)
|
||||
{
|
||||
if (_brk == NULL) {
|
||||
_brk = calloc(1, 128 * 1024 * 1024);
|
||||
if (_brk == NULL) {
|
||||
return addr;
|
||||
}
|
||||
}
|
||||
if (addr == NULL) {
|
||||
return _brk;
|
||||
}
|
||||
else {
|
||||
_brk = addr;
|
||||
return _brk;
|
||||
}
|
||||
}
|
||||
|
||||
void sys_exit(unsigned value, void, void, void, void, void)
|
||||
{
|
||||
exit(value);
|
||||
|
@ -38,5 +56,6 @@ void init_syscalls()
|
|||
syscall_table[1] = sys_write;
|
||||
syscall_table[2] = sys_open;
|
||||
syscall_table[8] = sys_lseek;
|
||||
syscall_table[12] = sys_brk;
|
||||
syscall_table[60] = sys_exit;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue