diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 33ccd87b6..412a29250 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -84,6 +84,7 @@ set(emulation_sources misc/sysctl.c misc/getrlimit.c misc/gethostuuid.c + misc/getrusage.c fcntl/open.c fcntl/fcntl.c network/socket.c diff --git a/src/kernel/emulation/linux/misc/getrusage.c b/src/kernel/emulation/linux/misc/getrusage.c new file mode 100644 index 000000000..afa98deb9 --- /dev/null +++ b/src/kernel/emulation/linux/misc/getrusage.c @@ -0,0 +1,16 @@ +#include "getrusage.h" +#include "../base.h" +#include "../errno.h" +#include + +long sys_getrusage(int who, void* rusage) +{ + int ret; + + ret = LINUX_SYSCALL(__NR_getrusage, who, rusage); + if (ret < 0) + ret = errno_linux_to_bsd(ret); + + return ret; +} + diff --git a/src/kernel/emulation/linux/misc/getrusage.h b/src/kernel/emulation/linux/misc/getrusage.h new file mode 100644 index 000000000..bd9d7607b --- /dev/null +++ b/src/kernel/emulation/linux/misc/getrusage.h @@ -0,0 +1,7 @@ +#ifndef LINUX_GETRUSAGE_H +#define LINUX_GETRUSAGE_H + +long sys_getrusage(int who, void* rusage); + +#endif + diff --git a/src/kernel/emulation/linux/syscalls.c b/src/kernel/emulation/linux/syscalls.c index eac588f2d..acd97b699 100644 --- a/src/kernel/emulation/linux/syscalls.c +++ b/src/kernel/emulation/linux/syscalls.c @@ -63,6 +63,7 @@ #include "misc/sysctl.h" #include "misc/proc_info.h" #include "misc/gethostuuid.h" +#include "misc/getrusage.h" #include "synch/semwait_signal.h" #include "fcntl/open.h" #include "fcntl/fcntl.h" @@ -172,6 +173,7 @@ void* __bsd_syscall_table[512] = { [97] = sys_socket, [98] = sys_connect, [116] = sys_gettimeofday, + [117] = sys_getrusage, [120] = sys_readv, [121] = sys_writev, [123] = sys_fchown,