Date: Wed, 12 Dec 2001 17:23:24 -0600 From: Alfred Perlstein <bright@mu.org> To: Julian Elischer <julian@vicor-nb.com> Cc: arch@freebsd.org Subject: Re: Threads, KSEs etc. during exit. Message-ID: <20011212172324.V92148@elvis.mu.org> In-Reply-To: <3C17DF99.1DE9D1A1@vicor-nb.com>; from julian@vicor-nb.com on Wed, Dec 12, 2001 at 02:52:09PM -0800 References: <3C17DF99.1DE9D1A1@vicor-nb.com>
next in thread | previous in thread | raw e-mail | index | archive | help
* Julian Elischer <julian@vicor-nb.com> [011212 16:52] wrote:
>
> Here is an implimentation detail I've hit that I'd like to
> discuss because it has some ramifications for non KSE code too.
[snip]
>
> This is all ok except that pmap_dispose_thread(td) will free
> the stack pages so are we safe in returning? No.
I think it's less important to get bogged down in the details,
what would make more sense is to perform the cleanup as part
of the job of the next-to-run thread's work as it exits the
scheduler.
This could be done in a MI fashion most likely.
The only problem is possibly recursing into one of those subsystems
in the case of thread pre-emption within the kernel.
Ok, so let's make it a bit simpler.
1) The exiting thread marks the structures as "in use".
2) It then queues them on the end of a "to be freed" list, this needs
a mutex.
3) It then enters the scheduler which runs the next thread.
4) On the way out in the context of another thread it will atomically
mark the structures as "freeable" then issue a wakeup/cv_signal on
the queue.
5) A dedicated per-cpu thread "thread_reaper" will then wakeup and
perform the cleanup.
Let's not over optimize it for now, getting it done correctly then
optimizing will probably get the job done for now.
--
-Alfred Perlstein [alfred@freebsd.org]
'Instead of asking why a piece of software is using "1970s technology,"
start asking why software is ignoring 30 years of accumulated wisdom.'
http://www.morons.org/rants/gpl-harmful.php3
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011212172324.V92148>
