svn commit: r247186 - in user/dchagin/lemul/sys: kern sys
Dmitry Chagin
dchagin at FreeBSD.org
Sat Feb 23 09:16:23 UTC 2013
Author: dchagin
Date: Sat Feb 23 09:16:22 2013
New Revision: 247186
URL: http://svnweb.freebsd.org/changeset/base/247186
Log:
In preparation for switching linuxulator to the use the native 1:1 threads
add hook for cleaning thread resources before the thread die.
Modified:
user/dchagin/lemul/sys/kern/kern_thread.c
user/dchagin/lemul/sys/sys/sysent.h
Modified: user/dchagin/lemul/sys/kern/kern_thread.c
==============================================================================
--- user/dchagin/lemul/sys/kern/kern_thread.c Sat Feb 23 09:14:28 2013 (r247185)
+++ user/dchagin/lemul/sys/kern/kern_thread.c Sat Feb 23 09:16:22 2013 (r247186)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <sys/smp.h>
#include <sys/sched.h>
#include <sys/sleepqueue.h>
+#include <sys/sysent.h>
#include <sys/selinfo.h>
#include <sys/turnstile.h>
#include <sys/ktr.h>
@@ -801,6 +802,12 @@ thread_suspend_check(int return_instead)
*/
if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td)) {
PROC_UNLOCK(p);
+ /*
+ * Let thread to do cleanup work before die.
+ */
+ if (__predict_false(p->p_sysent->sv_thread_detach != NULL))
+ (p->p_sysent->sv_thread_detach)(td);
+
tidhash_remove(td);
PROC_LOCK(p);
tdsigcleanup(td);
Modified: user/dchagin/lemul/sys/sys/sysent.h
==============================================================================
--- user/dchagin/lemul/sys/sys/sysent.h Sat Feb 23 09:14:28 2013 (r247185)
+++ user/dchagin/lemul/sys/sys/sysent.h Sat Feb 23 09:16:22 2013 (r247186)
@@ -130,6 +130,7 @@ struct sysentvec {
uint32_t sv_timekeep_gen;
void *sv_shared_page_obj;
void (*sv_schedtail)(struct thread *);
+ void (*sv_thread_detach)(struct thread *);
};
#define SV_ILP32 0x000100
More information about the svn-src-user
mailing list