diff --git a/lib/libc/gen/Symbol.map b/lib/libc/gen/Symbol.map --- a/lib/libc/gen/Symbol.map +++ b/lib/libc/gen/Symbol.map @@ -427,6 +427,7 @@ eventfd_write; getlogin_r; memalign; + pthread_getname_np; scandir_b; sigandset; sigisemptyset; @@ -488,6 +489,7 @@ _pthread_exit; _pthread_getspecific; _pthread_join; + _pthread_getname_np; _pthread_key_create; _pthread_key_delete; _pthread_kill; diff --git a/lib/libc/gen/_pthread_stubs.c b/lib/libc/gen/_pthread_stubs.c --- a/lib/libc/gen/_pthread_stubs.c +++ b/lib/libc/gen/_pthread_stubs.c @@ -133,6 +133,7 @@ [PJT_MUTEXATTR_SETROBUST] = {PJT_DUAL_ENTRY(stub_zero)}, [PJT_GETTHREADID_NP] = {PJT_DUAL_ENTRY(stub_zero)}, [PJT_ATTR_GET_NP] = {PJT_DUAL_ENTRY(stub_esrch)}, + [PJT_GETNAME_NP] = {PJT_DUAL_ENTRY(stub_zero)}, }; /* @@ -291,6 +292,7 @@ STUB_FUNC1(_pthread_cancel_enter, PJT_CANCEL_ENTER, void, int) STUB_FUNC1(_pthread_cancel_leave, PJT_CANCEL_LEAVE, void, int) STUB_FUNC2(pthread_attr_get_np, PJT_ATTR_GET_NP, int, pthread_t, pthread_attr_t *) +STUB_FUNC3(pthread_getname_np, PJT_GETNAME_NP, void, pthread_t, char *, size_t) static int stub_zero(void) diff --git a/lib/libc/include/libc_private.h b/lib/libc/include/libc_private.h --- a/lib/libc/include/libc_private.h +++ b/lib/libc/include/libc_private.h @@ -186,6 +186,7 @@ PJT_MUTEXATTR_SETROBUST, PJT_GETTHREADID_NP, PJT_ATTR_GET_NP, + PJT_GETNAME_NP, PJT_MAX } pjt_index_t; diff --git a/lib/libthr/pthread.map b/lib/libthr/pthread.map --- a/lib/libthr/pthread.map +++ b/lib/libthr/pthread.map @@ -194,6 +194,7 @@ _pthread_getaffinity_np; _pthread_getconcurrency; _pthread_getcpuclockid; + _pthread_getname_np; _pthread_getprio; _pthread_getschedparam; _pthread_getspecific; diff --git a/lib/libthr/thread/thr_info.c b/lib/libthr/thread/thr_info.c --- a/lib/libthr/thread/thr_info.c +++ b/lib/libthr/thread/thr_info.c @@ -116,9 +116,10 @@ buf[0] = '\0'; } -__weak_reference(_pthread_getname_np, pthread_getname_np); +__weak_reference(_thr_getname_np, pthread_getname_np); +__weak_reference(_thr_getname_np, _pthread_getname_np); int -_pthread_getname_np(pthread_t thread, char *buf, size_t len) +_thr_getname_np(pthread_t thread, char *buf, size_t len) { struct pthread *curthread; int res; @@ -149,5 +150,5 @@ void _pthread_get_name_np(pthread_t thread, char *buf, size_t len) { - (void)_pthread_getname_np(thread, buf, len); + (void)_thr_getname_np(thread, buf, len); } diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c --- a/lib/libthr/thread/thr_init.c +++ b/lib/libthr/thread/thr_init.c @@ -273,6 +273,7 @@ [PJT_MUTEXATTR_SETROBUST] = {DUAL_ENTRY(_thr_mutexattr_setrobust)}, [PJT_GETTHREADID_NP] = {DUAL_ENTRY(_thr_getthreadid_np)}, [PJT_ATTR_GET_NP] = {DUAL_ENTRY(_thr_attr_get_np)}, + [PJT_GETNAME_NP] = {DUAL_ENTRY(_thr_getname_np)}, }; static int init_once = 0; diff --git a/lib/libthr/thread/thr_private.h b/lib/libthr/thread/thr_private.h --- a/lib/libthr/thread/thr_private.h +++ b/lib/libthr/thread/thr_private.h @@ -1075,6 +1075,7 @@ int _thr_detach(pthread_t); int _thr_equal(pthread_t, pthread_t); void _Tthr_exit(void *); +int _thr_getname_np(pthread_t, char *, size_t); int _thr_key_create(pthread_key_t *, void (*)(void *)); int _thr_key_delete(pthread_key_t); int _thr_setspecific(pthread_key_t, const void *);