diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 341beabda..4d1c24d0a 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -54,6 +54,7 @@ set(emulation_sources unistd/chown.c unistd/umask.c unistd/chroot.c + unistd/getgid.c process/vfork.c process/fork.c process/wait4.c diff --git a/src/kernel/emulation/linux/syscalls.c b/src/kernel/emulation/linux/syscalls.c index 5eb63c20e..6b89ffec3 100644 --- a/src/kernel/emulation/linux/syscalls.c +++ b/src/kernel/emulation/linux/syscalls.c @@ -40,6 +40,7 @@ #include "unistd/mknod.h" #include "unistd/chmod.h" #include "unistd/chown.h" +#include "unistd/getgid.h" #include "signal/kill.h" #include "signal/sigaltstack.h" #include "signal/sigaction.h" @@ -127,6 +128,7 @@ void* __bsd_syscall_table[512] = { [41] = sys_dup, [43] = sys_getegid, [46] = sys_sigaction, + [47] = sys_getgid, [48] = sys_sigprocmask, [53] = sys_sigaltstack, [54] = sys_ioctl, diff --git a/src/kernel/emulation/linux/unistd/getgid.c b/src/kernel/emulation/linux/unistd/getgid.c new file mode 100644 index 000000000..87df0ca17 --- /dev/null +++ b/src/kernel/emulation/linux/unistd/getgid.c @@ -0,0 +1,16 @@ +#include "getgid.h" +#include "../base.h" +#include "../errno.h" +#include + +long sys_getgid(void) +{ + int ret; + + ret = LINUX_SYSCALL0(__NR_getgid); + if (ret < 0) + ret = errno_linux_to_bsd(ret); + + return ret; +} + diff --git a/src/kernel/emulation/linux/unistd/getgid.h b/src/kernel/emulation/linux/unistd/getgid.h new file mode 100644 index 000000000..72ed05378 --- /dev/null +++ b/src/kernel/emulation/linux/unistd/getgid.h @@ -0,0 +1,7 @@ +#ifndef LINUX_GETGID_H +#define LINUX_GETGID_H + +long sys_getgid(void); + +#endif +