diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 518ef1aae..91fb0057d 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -112,6 +112,7 @@ set(emulation_sources process/waitid.c process/execve.c process/posix_spawn.c + process/getpriority.c signal/duct_signals.c signal/kill.c signal/sigaltstack.c diff --git a/src/kernel/emulation/linux/process/getpriority.c b/src/kernel/emulation/linux/process/getpriority.c new file mode 100644 index 000000000..4bf7fec70 --- /dev/null +++ b/src/kernel/emulation/linux/process/getpriority.c @@ -0,0 +1,7 @@ +#include "getpriority.h" + +int sys_getpriority(int which, id_t who) { + return LINUX_SYSCALL(__NR_getpriority, which, who); + + // TODO: Errors +} diff --git a/src/kernel/emulation/linux/process/getpriority.h b/src/kernel/emulation/linux/process/getpriority.h new file mode 100644 index 000000000..db5862344 --- /dev/null +++ b/src/kernel/emulation/linux/process/getpriority.h @@ -0,0 +1,29 @@ +#ifndef LINUX_GETPRIORITY_H +#define LINUX_GETPRIORITY_H + +#include +#include +#include "../errno.h" +#include "../base.h" +#include + +int sys_getpriority(int which, id_t who); + +// Same on BSD and Linux +#define PRIO_PROCESS 0 +#define PRIO_PGRP 1 +#define PRIO_USER 2 + +// Unique to Darwin +#define PRIO_DARWIN_THREAD 3 +#define PRIO_DARWIN_PROCESS 4 + +// Same on BSD and Linux +#define PRIO_MIN -20 +#define PRIO_MAX 20 + +// Unique to Darwin +#define PRIO_DARWIN_BG 0x1000 +#define PRIO_DARWIN_NONUI 0x1001 + +#endif diff --git a/src/kernel/emulation/linux/syscalls.c b/src/kernel/emulation/linux/syscalls.c index 9998091a1..ea8d5f3b2 100644 --- a/src/kernel/emulation/linux/syscalls.c +++ b/src/kernel/emulation/linux/syscalls.c @@ -86,6 +86,7 @@ #include "process/wait4.h" #include "process/waitid.h" #include "process/execve.h" +#include "process/getpriority.h" #include "misc/getentropy.h" #include "misc/getlogin.h" #include "misc/shared_region_check_np.h" @@ -238,6 +239,7 @@ void* __bsd_syscall_table[600] = { [95] = sys_fsync, [97] = sys_socket, [98] = sys_connect, + [100] = sys_getpriority, [104] = sys_bind, [105] = sys_setsockopt, [106] = sys_listen,