--- src/sys/kern/lwkt_serialize.c 2005/11/23 01:27:54 1.7 +++ src/sys/kern/lwkt_serialize.c 2005/11/23 22:54:22 1.8 @@ -138,8 +138,15 @@ lwkt_serialize_handler_call(lwkt_seriali */ if (atomic_intr_handler_is_enabled(&s->interlock) == 0) { atomic_intr_cond_enter(&s->interlock, lwkt_serialize_sleep, s); +#ifdef INVARIANTS + s->last_td = curthread; +#endif if (atomic_intr_handler_is_enabled(&s->interlock) == 0) func(arg, frame); +#ifdef INVARIANTS + KKASSERT(s->last_td == curthread); + s->last_td = (void *)-2; +#endif atomic_intr_cond_exit(&s->interlock, lwkt_serialize_wakeup, s); } } @@ -158,7 +165,15 @@ lwkt_serialize_handler_try(lwkt_serializ */ if (atomic_intr_handler_is_enabled(&s->interlock) == 0) { if (atomic_intr_cond_try(&s->interlock) == 0) { +#ifdef INVARIANTS + s->last_td = curthread; +#endif func(arg, frame); +#ifdef INVARIANTS + KKASSERT(s->last_td == curthread); + s->last_td = (void *)-2; +#endif + atomic_intr_cond_exit(&s->interlock, lwkt_serialize_wakeup, s); return(0); } }