lkml.org 
[lkml]   [2002]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: spinlock assertion macros
    On Jul 10, 2002  16:36 -0700, Jesse Barnes wrote:
    > Sounds like a great idea to me. Were you thinking of something along
    > the lines of what I have below or perhaps something more
    > sophisticated? I suppose it would be helpful to have the name of the
    > lock in addition to the file and line number...
    >
    > Jesse
    >
    >
    > diff -Naur -X /home/jbarnes/dontdiff linux-2.5.25/fs/inode.c linux-2.5.25-spinassert/fs/inode.c
    > --- linux-2.5.25/fs/inode.c Fri Jul 5 16:42:38 2002
    > +++ linux-2.5.25-spinassert/fs/inode.c Wed Jul 10 16:30:18 2002
    > @@ -183,6 +183,8 @@
    > */
    > void __iget(struct inode * inode)
    > {
    > + spin_assert_locked(&inode_lock);
    > +
    > if (atomic_read(&inode->i_count)) {
    > atomic_inc(&inode->i_count);
    > return;
    > diff -Naur -X /home/jbarnes/dontdiff linux-2.5.25/include/linux/spinlock.h linux-2.5.25-spinassert/include/linux/spinlock.h
    > --- linux-2.5.25/include/linux/spinlock.h Fri Jul 5 16:42:24 2002
    > +++ linux-2.5.25-spinassert/include/linux/spinlock.h Wed Jul 10 16:20:06 2002
    > @@ -118,6 +118,18 @@
    >
    > #endif /* !SMP */
    >
    > +/*
    > + * Simple lock assertions for debugging and documenting where locks need
    > + * to be locked/unlocked.
    > + */
    > +#ifdef CONFIG_DEBUG_SPINLOCK
    > +#define spin_assert_locked(lock) if (!spin_is_locked(lock)) { printk("lock assertion failure: lock at %s:%d should be locked!\n", __FILE__, __LINE__); }

    You can use CPP to add in the lock name like:

    #define spin_assert_locked(lock) if (!spin_is_locked(lock)) \
    printk("lock assertion error: %s:%d: " #lock \
    " should be locked!\n", __FILE__, __LINE__)

    #define spin_assert_unlocked(lock) if (!spin_is_locked(lock)) \
    printk("lock assertion error: %s:%d: " #lock \
    " should be unlocked!\n", __FILE__, __LINE__)

    Cheers, Andreas
    --
    Andreas Dilger
    http://www-mddsp.enel.ucalgary.ca/People/adilger/
    http://sourceforge.net/projects/ext2resize/

    -
    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:0.025 / U:30.732 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site