diff --git a/src/kernel/emulation/linux/misc/proc_info.c b/src/kernel/emulation/linux/misc/proc_info.c index 81f5c2a45..8428b0599 100644 --- a/src/kernel/emulation/linux/misc/proc_info.c +++ b/src/kernel/emulation/linux/misc/proc_info.c @@ -6,6 +6,8 @@ #include "../ext/syslog.h" #include "../simple.h" +#define LINUX_PR_SET_NAME 15 + long sys_proc_info(uint32_t callnum, int32_t pid, uint32_t flavor, uint64_t arg, void* buffer, int32_t bufsize) { @@ -22,6 +24,19 @@ long sys_proc_info(uint32_t callnum, int32_t pid, uint32_t flavor, return ret; } + case 5: // proc_setthreadname + { + // On macOS, pthread_setname_np() takes only one argument, + // thus we can ignore pid and assume we're talking about + // the current thread. + int ret; + + ret = LINUX_SYSCALL(__NR_prctl, LINUX_PR_SET_NAME, buffer, 0UL, 0UL, 0UL); + if (ret < 0) + return errno_linux_to_bsd(ret); + + return ret; + } case 1: // proc_listpids case 2: // proc_pidinfo case 3: // proc_pidfdinfo