Why trying to debug some locking code of my own I enabled
SIMPLELOCK_DEBUG, only to find out that I was getting lots of
`simple_unlock: lock not held' in lockmgr -> acquire -> apause.

Looking closer at `apause' it seems rather clear that it can cause
this.  I proposed simple change is below.

Comments?

/assar

--- kern_lock.c.orig    Mon Nov  8 03:55:26 1999
+++ kern_lock.c Mon Nov  8 04:24:13 1999
@@ -116,9 +119,11 @@
                                simple_lock(&lkp->lk_interlock);
                                if ((lkp->lk_flags & flags) == 0)
                                        return 0;
+                               simple_unlock(&lkp->lk_interlock);
                                break;
                        }
                }
+               simple_lock(&lkp->lk_interlock);
        }
        return 1;
 }


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to