Add sys_brk.

This commit is contained in:
Andrius Štikonas 2023-12-28 22:13:02 +00:00
parent e894942e52
commit e61e1b16b4
1 changed files with 20 additions and 1 deletions

View File

@ -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;
}