diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 169bb1e12..22dc8a7e9 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -31,6 +31,7 @@ set(emulation_sources unistd/fchdir.c unistd/fchown.c unistd/fchmod.c + unistd/getegid.c unistd/setgid.c unistd/setuid.c unistd/setegid.c diff --git a/src/kernel/emulation/linux/syscalls.c b/src/kernel/emulation/linux/syscalls.c index 7d98cdfbb..12dce290a 100644 --- a/src/kernel/emulation/linux/syscalls.c +++ b/src/kernel/emulation/linux/syscalls.c @@ -30,6 +30,7 @@ #include "unistd/readlink.h" #include "unistd/readv.h" #include "unistd/writev.h" +#include "unistd/getegid.h" #include "signal/kill.h" #include "signal/sigaltstack.h" #include "signal/sigaction.h" @@ -71,6 +72,7 @@ void* __bsd_syscall_table[512] = { [36] = sys_sync, [37] = sys_kill, [41] = sys_dup, + [43] = sys_getegid, [46] = sys_sigaction, [53] = sys_sigaltstack, [54] = sys_ioctl, diff --git a/src/kernel/emulation/linux/unistd/getegid.c b/src/kernel/emulation/linux/unistd/getegid.c new file mode 100644 index 000000000..20938face --- /dev/null +++ b/src/kernel/emulation/linux/unistd/getegid.c @@ -0,0 +1,16 @@ +#include "getegid.h" +#include "../base.h" +#include "../errno.h" +#include + +long sys_getegid(void) +{ + int ret; + + ret = LINUX_SYSCALL0(__NR_getegid); + if (ret < 0) + ret = errno_linux_to_bsd(ret); + + return ret; +} + diff --git a/src/kernel/emulation/linux/unistd/getegid.h b/src/kernel/emulation/linux/unistd/getegid.h new file mode 100644 index 000000000..3e861307c --- /dev/null +++ b/src/kernel/emulation/linux/unistd/getegid.h @@ -0,0 +1,7 @@ +#ifndef LINUX_GETEGID_H +#define LINUX_GETEGID_H + +long sys_getegid(void); + +#endif +