Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Oct 2003 17:18:19 -0400 (EDT)
From:      Daniel Eischen <eischen@vigrid.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org
Subject:   RE: cvs commit: src/sys/sys mutex.h
Message-ID:  <Pine.GSO.4.10.10310141713100.7209-100000@pcnet5.pcnet.com>
In-Reply-To: <XFMail.20031014170830.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 14 Oct 2003, John Baldwin wrote:

> 
> On 14-Oct-2003 Jeff Roberson wrote:
> > On Tue, 14 Oct 2003, John Baldwin wrote:
> > 
> >>
> >> On 12-Oct-2003 Jeff Roberson wrote:
> >> > jeff        2003/10/12 14:02:55 PDT
> >> >
> >> >   FreeBSD src repository
> >> >
> >> >   Modified files:
> >> >     sys/sys              mutex.h
> >> >   Log:
> >> >    - Implement a mtx_ownedby() macro which can be used to determine if a
> >> >      particular thread owns a mutex.  This cannot be done without races
> >> >      unless the thread is curthread.
> >>
> >> This is a very bad idea.  What use do you have for this that is not
> >> already handled by mtx_owned() or a mutex assertion?
> > 
> > I know it is racy in most contexts.  I use it to check to see if a thread
> > on the runq owns giant.  Since I have the sched lock it isn't racy but
> > even if it was it wouldn't matter in this case.
> 
> sched lock doesn't keep it from being racy.  Uncontested acquire and
> releases don't go anywhere near sched lock.  Are you checking a
> non-curthread thread pointer?  Maybe you could just do it for curthread
> and that would be enough for your heuristic, i.e.
> 
>         if (thread == curthread && mtx_owned(&Giant)) {
>                 ...
>         }
> 
> I'm just worried that if this is there someone is going to use it. :(

Just a thought.  If you could assign priorities to mutexes
(like priority ceiling/protect mutexes), threads owning
such mutexes would inherit their priority and the schedulers
wouldn't need to know about who owned specific mutexes.

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10310141713100.7209-100000>