unnamed threads: Obliterate
Ever read gdb output and you just kinda get a headache because you have to infer what a thread is by reading the stack trace? It's not hard, but we could also just never have to do that again, which is also not hard. Sample: (gdb) info thr Id Target Id Frame * 1 LWP 3719283 "nix-daemon" 0x00007e558587da0f in accept () from target:/nix/store/c10zhkbp6jmyh0xc5kd123ga8yy2p4hk-glibc-2.39-52/lib/libc.so.6 2 LWP 3719284 "signal handler" 0x00007e55857b2bea in sigtimedwait () from target:/nix/store/c10zhkbp6jmyh0xc5kd123ga8yy2p4hk-glibc-2.39-52/lib/libc.so.6 The API design for this is forced by the macOS pthread_setname_np only being able to change the current thread's name, but if we just conform everything to that, it works everywhere. Change-Id: I2b1d6ed41e3c94170cb0b4e73ad66f239ebd9c88
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
#include <pthread.h>
|
||||
#if defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
#include <pthread_np.h>
|
||||
#endif
|
||||
|
||||
namespace nix {
|
||||
|
||||
void setCurrentThreadName(const char * name)
|
||||
{
|
||||
// https://stackoverflow.com/questions/2369738/how-to-set-the-name-of-a-thread-in-linux-pthreads/7989973
|
||||
#if defined(__linux__)
|
||||
pthread_setname_np(pthread_self(), name);
|
||||
#elif defined(__APPLE__)
|
||||
pthread_setname_np(name);
|
||||
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
pthread_set_name_np(pthread_self(), name);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user