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());
 

Reply via email to