Add sys_brk.
This commit is contained in:
parent
e894942e52
commit
e61e1b16b4
|
@ -4,7 +4,8 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* 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)
|
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);
|
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)
|
void sys_exit(unsigned value, void, void, void, void, void)
|
||||||
{
|
{
|
||||||
exit(value);
|
exit(value);
|
||||||
|
@ -38,5 +56,6 @@ void init_syscalls()
|
||||||
syscall_table[1] = sys_write;
|
syscall_table[1] = sys_write;
|
||||||
syscall_table[2] = sys_open;
|
syscall_table[2] = sys_open;
|
||||||
syscall_table[8] = sys_lseek;
|
syscall_table[8] = sys_lseek;
|
||||||
|
syscall_table[12] = sys_brk;
|
||||||
syscall_table[60] = sys_exit;
|
syscall_table[60] = sys_exit;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue