Skip site navigation (1)Skip section navigation (2)
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>