svn commit: r271007 - in head/sys: kern sys
Konstantin Belousov
kib at FreeBSD.org
Wed Sep 3 08:35:43 UTC 2014
Author: kib
Date: Wed Sep 3 08:35:42 2014
New Revision: 271007
URL: http://svnweb.freebsd.org/changeset/base/271007
Log:
Retire thread_unthread(), it has only one caller. Update comment in
the block of code before the previous call to thread_unthread().
Discussed with: alc
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Modified:
head/sys/kern/kern_thread.c
head/sys/sys/proc.h
Modified: head/sys/kern/kern_thread.c
==============================================================================
--- head/sys/kern/kern_thread.c Wed Sep 3 08:30:18 2014 (r271006)
+++ head/sys/kern/kern_thread.c Wed Sep 3 08:35:42 2014 (r271007)
@@ -549,18 +549,6 @@ thread_link(struct thread *td, struct pr
}
/*
- * Convert a process with one thread to an unthreaded process.
- */
-void
-thread_unthread(struct thread *td)
-{
- struct proc *p = td->td_proc;
-
- KASSERT((p->p_numthreads == 1), ("Unthreading with >1 threads"));
- p->p_flag &= ~P_HADTHREADS;
-}
-
-/*
* Called from:
* thread_exit()
*/
@@ -712,14 +700,13 @@ stopme:
}
if (mode == SINGLE_EXIT) {
/*
- * We have gotten rid of all the other threads and we
- * are about to either exit or exec. In either case,
- * we try our utmost to revert to being a non-threaded
- * process.
+ * Convert the process to an unthreaded process. The
+ * SINGLE_EXIT is called by exit1() or execve(), in
+ * both cases other threads must be retired.
*/
+ KASSERT(p->p_numthreads == 1, ("Unthreading with >1 threads"));
p->p_singlethread = NULL;
- p->p_flag &= ~(P_STOPPED_SINGLE | P_SINGLE_EXIT);
- thread_unthread(td);
+ p->p_flag &= ~(P_STOPPED_SINGLE | P_SINGLE_EXIT | P_HADTHREADS);
/*
* Wait for any remaining threads to exit cpu_throw().
Modified: head/sys/sys/proc.h
==============================================================================
--- head/sys/sys/proc.h Wed Sep 3 08:30:18 2014 (r271006)
+++ head/sys/sys/proc.h Wed Sep 3 08:35:42 2014 (r271007)
@@ -956,7 +956,6 @@ void thread_suspend_one(struct thread *t
void thread_unlink(struct thread *td);
void thread_unsuspend(struct proc *p);
int thread_unsuspend_one(struct thread *td);
-void thread_unthread(struct thread *td);
void thread_wait(struct proc *p);
struct thread *thread_find(struct proc *p, lwpid_t tid);
More information about the svn-src-head
mailing list