diff options
author | davidxu <davidxu@FreeBSD.org> | 2006-02-05 02:18:46 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2006-02-05 02:18:46 +0000 |
commit | 7ef206e1a842032c820ef523ad14364862168a05 (patch) | |
tree | c64365126251949792afeea41bfd988ab18d50c0 /sys/kern/kern_thr.c | |
parent | f2384c93e3e037aeae70e774832e2695f10c6b10 (diff) | |
download | FreeBSD-src-7ef206e1a842032c820ef523ad14364862168a05.zip FreeBSD-src-7ef206e1a842032c820ef523ad14364862168a05.tar.gz |
Implement thr_set_name to set a name for thread.
Reviewed by: julian
Diffstat (limited to 'sys/kern/kern_thr.c')
-rw-r--r-- | sys/kern/kern_thr.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/kern/kern_thr.c b/sys/kern/kern_thr.c index 2a20bb1..86df4d7 100644 --- a/sys/kern/kern_thr.c +++ b/sys/kern/kern_thr.c @@ -407,3 +407,32 @@ thr_wake(struct thread *td, struct thr_wake_args *uap) PROC_UNLOCK(p); return (0); } + +int +thr_set_name(struct thread *td, struct thr_set_name_args *uap) +{ + struct proc *p = td->td_proc; + char name[MAXCOMLEN + 1]; + struct thread *ttd; + int error; + + error = 0; + name[0] = '\0'; + if (uap->name != NULL) { + error = copyinstr(uap->name, name, sizeof(name), + NULL); + if (error) + return (error); + } + PROC_LOCK(p); + if (uap->id == td->td_tid) + ttd = td; + else + ttd = thread_find(p, uap->id); + if (ttd != NULL) + strcpy(ttd->td_name, name); + else + error = ESRCH; + PROC_UNLOCK(p); + return (error); +} |