Date: Thu, 13 Dec 2001 03:20:13 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: Alfred Perlstein <bright@mu.org> Cc: arch@freebsd.org, Julian Elischer <julian@vicor-nb.com> Subject: Re: Threads, KSEs etc. during exit. Message-ID: <XFMail.011213032013.jhb@FreeBSD.org> In-Reply-To: <20011212172324.V92148@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 12-Dec-01 Alfred Perlstein wrote: > * 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. Have one thread reaper kproc for now. Eventually I think we will want a generic mechanism for specifying that a given kproc should have per-cpu threads and we can worry about that later. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ 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?XFMail.011213032013.jhb>