Sure thing, here an updated diff. Regards. On 18 July 2017 at 16:22, Ted Unangst <t...@tedunangst.com> wrote:
> David CARLIER wrote: > > Hi. > > > > I sent a diff originally to a smaller audience but finally decided to > post > > it in the mailing list. > > So it is to introduce the pthread_set_name_np's counterpart so > > pthread_get_name_np. > > Some softwares use it (NSPR for example) and anyway internally in my > > workplace we have multiplatform needing this feature would be nice having > > this for OpenBSD as well :-) > > > > Let me know what you think. > > this is fine, it makes sense to have a get function if there's a set > function. you can combine the man pages, however. no need for two. just > add a > sentence to the existing one. >
Index: lib/libpthread/include/pthread_np.h =================================================================== RCS file: /cvs/src/lib/libpthread/include/pthread_np.h,v retrieving revision 1.11 diff -u -p -r1.11 pthread_np.h --- lib/libpthread/include/pthread_np.h 22 Mar 2012 17:21:36 -0000 1.11 +++ lib/libpthread/include/pthread_np.h 18 Jul 2017 20:50:26 -0000 @@ -46,6 +46,7 @@ __BEGIN_DECLS int pthread_mutexattr_getkind_np(pthread_mutexattr_t); int pthread_mutexattr_setkind_np(pthread_mutexattr_t *, int); void pthread_set_name_np(pthread_t, const char *); +void pthread_get_name_np(pthread_t, char *, size_t); int pthread_stackseg_np(pthread_t, stack_t *); int pthread_main_np(void); __END_DECLS Index: lib/libpthread/man/pthread_set_name_np.3 =================================================================== RCS file: /cvs/src/lib/libpthread/man/pthread_set_name_np.3,v retrieving revision 1.6 diff -u -p -r1.6 pthread_set_name_np.3 --- lib/libpthread/man/pthread_set_name_np.3 6 Mar 2014 17:42:25 -0000 1.6 +++ lib/libpthread/man/pthread_set_name_np.3 18 Jul 2017 20:50:26 -0000 @@ -11,6 +11,8 @@ .In pthread_np.h .Ft void .Fn pthread_set_name_np "pthread_t thread" "const char *name" +.Ft void +.Fn pthread_get_name_np "pthread_t thread" "char *name" "size_t len" .Sh DESCRIPTION The .Fn pthread_set_name_np @@ -26,6 +28,11 @@ signal. The string pointed to by .Fa name is copied, and so need not be valid for the life of the thread. +.Fn pthread_get_name_np +function retrieves +.Fa name +associated with +.Fa thread . .Sh SEE ALSO .Xr pthreads 3 .Sh STANDARDS Index: lib/libpthread/man/pthreads.3 =================================================================== RCS file: /cvs/src/lib/libpthread/man/pthreads.3,v retrieving revision 1.41 diff -u -p -r1.41 pthreads.3 --- lib/libpthread/man/pthreads.3 16 Jul 2013 15:21:11 -0000 1.41 +++ lib/libpthread/man/pthreads.3 18 Jul 2017 20:50:26 -0000 @@ -169,6 +169,8 @@ The functions available are as follows: Identify the main thread. .It Fn pthread_set_name_np Set the name of a thread. +.It Fn pthread_get_name_np +Get the name of a thread .It Fn pthread_stackseg_np Return stack size and location. .It Fn pthread_yield @@ -421,6 +423,7 @@ with larger numbers generating more verb .Xr pthread_detach 3 , .Xr pthread_equal 3 , .Xr pthread_exit 3 , +.Xr pthread_get_name_np 3 , .Xr pthread_getcpuclockid 3 , .Xr pthread_getspecific 3 , .Xr pthread_join 3 , Index: lib/librthread/Symbols.map =================================================================== RCS file: /cvs/src/lib/librthread/Symbols.map,v retrieving revision 1.3 diff -u -p -r1.3 Symbols.map --- lib/librthread/Symbols.map 27 Feb 2017 07:15:22 -0000 1.3 +++ lib/librthread/Symbols.map 18 Jul 2017 20:50:26 -0000 @@ -54,6 +54,7 @@ pthread_detach; pthread_equal; pthread_exit; + pthread_get_name_np; pthread_getconcurrency; pthread_getcpuclockid; pthread_getprio; Index: lib/librthread/pthread_np.h =================================================================== RCS file: /cvs/src/lib/librthread/pthread_np.h,v retrieving revision 1.1 diff -u -p -r1.1 pthread_np.h --- lib/librthread/pthread_np.h 2 Apr 2016 19:56:53 -0000 1.1 +++ lib/librthread/pthread_np.h 18 Jul 2017 20:50:26 -0000 @@ -24,6 +24,7 @@ PROTO_DEPRECATED(pthread_main_np); PROTO_DEPRECATED(pthread_mutexattr_getkind_np); PROTO_DEPRECATED(pthread_mutexattr_setkind_np); PROTO_DEPRECATED(pthread_set_name_np); +PROTO_DEPRECATED(pthread_get_name_np); PROTO_DEPRECATED(pthread_stackseg_np); #endif /* !_LIBPTHREAD_PTHREAD_NP_H_ */ Index: lib/librthread/rthread_np.c =================================================================== RCS file: /cvs/src/lib/librthread/rthread_np.c,v retrieving revision 1.19 diff -u -p -r1.19 rthread_np.c --- lib/librthread/rthread_np.c 7 May 2016 19:05:22 -0000 1.19 +++ lib/librthread/rthread_np.c 18 Jul 2017 20:50:26 -0000 @@ -43,6 +43,20 @@ pthread_set_name_np(pthread_t thread, co strlcpy(thread->name, name, sizeof(thread->name)); } +void +pthread_get_name_np(pthread_t thread, char *name, size_t len) +{ + if (!name) + return; + if (!thread->name) + name[0] = '\0'; + else { + if (len > sizeof(thread->name)) + len = sizeof(thread->name); + strlcpy(name, thread->name, len); + } +} + int pthread_main_np(void) { Index: regress/lib/libpthread/fork/fork.c =================================================================== RCS file: /cvs/src/regress/lib/libpthread/fork/fork.c,v retrieving revision 1.4 diff -u -p -r1.4 fork.c --- regress/lib/libpthread/fork/fork.c 31 Jul 2003 21:48:04 -0000 1.4 +++ regress/lib/libpthread/fork/fork.c 18 Jul 2017 20:50:27 -0000 @@ -73,6 +73,7 @@ main(int argc, char *argv[]) int flags; pthread_t sleeper_thread; void *result; + char name[32]; int status; pid_t parent_pid; pid_t child_pid; @@ -88,6 +89,8 @@ main(int argc, char *argv[]) CHECKr(pthread_create(&sleeper_thread, NULL, sleeper, NULL)); sleep(1); + pthread_get_name_np(sleeper_thread, name, sizeof(name)); + ASSERT(strcmp(name, "slpr") == 0); printf("forking from pid %d\n", getpid());