Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Sep 2003 15:15:22 -0700 (PDT)
From:      Nate Lawson <nate@root.org>
To:        "David G. Lawrence" <dg@dglawrence.com>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/ata ata-all.c ata-disk.c ata-disk.h atapi-all.c atapi-all.h
Message-ID:  <20030905150357.U72582@root.org>
In-Reply-To: <20030905200502.GB61917@nexus.dglawrence.com>
References:  <20030905182744.6630916A4E8@hub.freebsd.org> <20030905124936.F72174@root.org> <20030905200502.GB61917@nexus.dglawrence.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 5 Sep 2003, David G. Lawrence wrote:
> Nate Lawson wrote:
> > Yikes, invasive.  Is there a way to do a "if (held(lock))" construct
> > instead?
>
>    What do you mean by invasive?

Changing all the callers to pass a flag whether or not they hold the lock.
I'm not experienced with what the best accepted approach to locking is.
However, it seems like locks should not require external information (i.e.
hints) or recursion generally.  I understand this is not an OS lock but an
ATA lock but it seems like the same principle would apply.  My question is
whether there is a way the call path can be changed so that the flag is
implicit or for the exception case there is a way to query the lock to see
if it's already held.  Would such an approach be feasible?

-Nate



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