lkml.org 
[lkml]   [2002]   [Jul]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: spinlock assertion macros
    Date
    On Friday 12 July 2002 01:52, Sandy Harris wrote:
    > Oliver Xymoron wrote:
    > >
    > > On Thu, 11 Jul 2002, Daniel Phillips wrote:
    > >
    > > > I was thinking of something as simple as:
    > > >
    > > > #define spin_assert_locked(LOCK) BUG_ON(!spin_is_locked(LOCK))
    > > >
    > > > but in truth I'd be happy regardless of the internal implementation. A note
    > > > on names: Linus likes to shout the names of his BUG macros. I've never been
    > > > one for shouting, but it's not my kernel, and anyway, I'm happy he now likes
    > > > asserts. I bet he'd like it more spelled like this though:
    > > >
    > > > MUST_HOLD(&lock);
    > >
    > > I prefer that form too.
    >
    > Is it worth adding MUST_NOT_HOLD(&lock) in an attempt to catch potential
    > deadlocks?
    >
    > Say that if two or more of locks A, B and C are to be taken, then
    > they must be taken in that order. You might then have code like:
    >
    > MUST_NOT_HOLD(&lock_B) ;
    > MUST_NOT_HOLD(&lock_C) ;
    > spinlock(&lock_A) ;
    >
    > I think you need a separate asertion for this !MUST_NOT_HOLD(&lock)
    > has different semantics.

    MUST_NOT_HOLD is already in Jesse's patch he posted earlier today,
    though I imagine it would be used rarely if at all.

    !MUST_NOT_HOLD(&lock) is an error, MUST_NOT_HOLD is a statement not a
    function.

    --
    Daniel
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:27    [W:2.621 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site