Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Oct 2000 22:37:33 +0200
From:      Bernd Walter <ticso@cicely5.cicely.de>
To:        John Baldwin <jhb@FreeBSD.ORG>
Cc:        Mark Murray <mark@grondar.za>, freebsd-smp@FreeBSD.ORG, Boris Popov <bp@butya.kz>, Jake Burkholder <jburkhol@home.com>
Subject:   Re: Problems with kthread_exit() and SMPng
Message-ID:  <20001005223733.A40689@cicely5.cicely.de>
In-Reply-To: <XFMail.001005115353.jhb@FreeBSD.org>; from jhb@FreeBSD.ORG on Thu, Oct 05, 2000 at 11:53:53AM -0700
References:  <200010051826.e95IQfJ12260@grimreaper.grondar.za> <XFMail.001005115353.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Oct 05, 2000 at 11:53:53AM -0700, John Baldwin wrote:
> 
> On 05-Oct-00 Mark Murray wrote:
> > Hmm. I'll try that. Will the (kthread_)exit release Giant?
> 
> Yes.  cpu_exit() (called by exit1()) releases Giant as its
> final act before calling cpu_switch() (should be cpu_throw())
> to run the next process.
> 
> > My thread does a lot of work; if it holds Giant, then it can't be
> > preempted. That would be a problem.
> 
> Errr, it can be pre-empted,  but your thread doesn't need Giant except
> for kthread_exit().
> 
> > There is another problem; printf's inside a kthread corrupt like
> > crazy. They look very unthreadsafe.
> 
> printf() is not MP safe. :-P  You probably want to grab Giant before
> calling printf().

Isn't it better to just fetch Giant inside of kthread_exit() and printf()?
Giant is recursive so it shouldn't hurt much if we allocate it while
already owning it but we don't need to rechange thread safe code after
these restrictions fall.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso@cicely.de         Usergroup           info@cosmo-project.de



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001005223733.A40689>