crit_exit - Correct panic conditions
authorAlex Hornung <ahornung@gmail.com>
Wed, 25 Aug 2010 09:09:03 +0000 (10:09 +0100)
committerAlex Hornung <ahornung@gmail.com>
Wed, 25 Aug 2010 09:48:57 +0000 (10:48 +0100)
* Now that critical sections have been moved out of the td_pri and use
  their own td_critcount, we also need to adjust the panic conditions
  accordingly.

sys/kern/lwkt_thread.c
sys/sys/thread2.h

index 85f488d..8deb893 100644 (file)
@@ -1618,10 +1618,10 @@ void
 crit_panic(void)
 {
     thread_t td = curthread;
-    int lpri = td->td_pri;
+    int lcrit = td->td_critcount;
 
-    td->td_pri = 0;
-    panic("td_pri is/would-go negative! %p %d", td, lpri);
+    td->td_critcount = 0;
+    panic("td_critcount is/would-go negative! %p %d", td, lcrit);
 }
 
 #ifdef SMP
index 442c500..710162f 100644 (file)
@@ -149,7 +149,7 @@ _crit_exit_noyield(struct thread *curtd __DEBUG_CRIT_ADD_ARG__)
     __DEBUG_CRIT_EXIT(curtd);
     --curtd->td_critcount;
 #ifdef INVARIANTS
-    if (curtd->td_pri < 0)
+    if (curtd->td_critcount < 0)
        crit_panic();
 #endif
     cpu_ccfence();     /* prevent compiler reordering */
@@ -163,7 +163,7 @@ _crit_exit(__DEBUG_CRIT_ARG__)
     __DEBUG_CRIT_EXIT(td);
     --td->td_critcount;
 #ifdef INVARIANTS
-    if (td->td_pri < 0)
+    if (td->td_critcount < 0)
        crit_panic();
 #endif
     cpu_ccfence();     /* prevent compiler reordering */