From: john stultz <johnstul@us.ibm.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
Mike Fulton <fultonm@ca.ibm.com>,
Sean Foley <Sean_Foley@ca.ibm.com>,
Darren Hart <dvhltc@us.ibm.com>
Subject: [RFC][PATCH] Add prctl to set sibling thread names
Date: Wed, 21 Oct 2009 16:21:37 -0700 [thread overview]
Message-ID: <1256167297.4768.14.camel@localhost.localdomain> (raw)
Taking a very raw attempt at this, I scratched out the following simple
implementation. I'd appreciate any review or suggestions for
improvements. I'm not at all certain the passing of the thread pid_t
through the unsigned long is valid, for instance, or if
same_thread_group() is the right check to make sure we only change
siblings and not tid from other processes. So any advice on better
approaches would be great.
thanks
-john
========================
Setting a thread's comm to be something unique is a very useful ability
and is helpful for debugging complicated threaded applications. However
currently the only way to set a thread name is for the thread to name
itself via the PR_SET_NAME prctl.
However, there may be situations where it would be advantageous for a
thread dispatcher to be naming the threads its managing, rather then
having the threads self-describe themselves. This sort of behavior is
available on other systems via the pthread_setname_np() interface.
This patch allows a thread to name its sibling threads via a new
PR_SET_THREAD_NAME prctrl.
Signed-off-by: John Stultz <johnstul@us.ibm.com>
diff --git a/include/linux/prctl.h b/include/linux/prctl.h
index 9311505..2726527 100644
--- a/include/linux/prctl.h
+++ b/include/linux/prctl.h
@@ -52,6 +52,7 @@
#define PR_SET_NAME 15 /* Set process name */
#define PR_GET_NAME 16 /* Get process name */
+#define PR_SET_THREAD_NAME 17 /* Set sibling thread name */
/* Get/set process endian */
#define PR_GET_ENDIAN 19
diff --git a/kernel/sys.c b/kernel/sys.c
index 255475d..d25851a 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1506,6 +1506,27 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
sizeof(comm)))
return -EFAULT;
return 0;
+ case PR_SET_THREAD_NAME:
+ {
+ struct task_struct *tsk;
+ pid_t tid;
+
+ comm[sizeof(me->comm)-1] = 0;
+ tid = (pid_t)arg2;
+ if (strncpy_from_user(comm, (char __user *)arg3,
+ sizeof(me->comm) - 1) < 0)
+ return -EFAULT;
+
+ tsk = get_pid_task(find_get_pid(tid), PIDTYPE_PID);
+ if (!tsk)
+ return -EINVAL;
+
+ if (!same_thread_group(me, tsk))
+ return -EINVAL;
+
+ set_task_comm(tsk, comm);
+ return 0;
+ }
case PR_GET_ENDIAN:
error = GET_ENDIAN(me, arg2);
break;
next reply other threads:[~2009-10-21 23:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-21 23:21 john stultz [this message]
2009-10-22 0:28 ` [RFC][PATCH] Add prctl to set sibling thread names Andi Kleen
2009-10-22 0:42 ` john stultz
2009-10-22 0:44 ` Andi Kleen
2009-10-22 0:48 ` Arjan van de Ven
2009-10-22 0:49 ` Andi Kleen
2009-10-22 2:48 ` Arjan van de Ven
2009-10-24 3:54 ` Andi Kleen
2009-10-26 23:56 ` john stultz
2009-10-22 0:52 ` john stultz
2009-10-22 2:00 ` Andrew Morton
2009-11-05 2:26 ` KOSAKI Motohiro
2009-11-05 5:17 ` Darren Hart
2009-11-05 5:22 ` KOSAKI Motohiro
2009-11-05 5:36 ` Darren Hart
2009-11-05 5:42 ` KOSAKI Motohiro
2009-11-05 19:11 ` john stultz
[not found] ` <OF5EE04242.D2B67AF2-ON85257665.0064683D-85257665.0068209E@ca.ibm.com>
2009-11-10 5:27 ` KOSAKI Motohiro
2009-11-10 20:16 ` john stultz
2009-11-11 0:04 ` KOSAKI Motohiro
-- strict thread matches above, loose matches on Subject: below --
2009-11-05 19:03 Sean Foley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1256167297.4768.14.camel@localhost.localdomain \
--to=johnstul@us.ibm.com \
--cc=Sean_Foley@ca.ibm.com \
--cc=andi@firstfloor.org \
--cc=dvhltc@us.ibm.com \
--cc=fultonm@ca.ibm.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.