From 88d9984e165ae71eabecdffd3eb7637adadf822f Mon Sep 17 00:00:00 2001 From: Lubos Dolezel Date: Thu, 24 Nov 2016 22:26:39 +0100 Subject: [PATCH] Support setting thread name via sys_proc_info() --- src/kernel/emulation/linux/misc/proc_info.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 -- 2.51.2