HEADSUP: Sleep queues added to kernel, so be careful.
    John Baldwin 
    jhb at FreeBSD.org
       
    Fri Feb 27 11:00:26 PST 2004
    
    
  
On Friday 27 February 2004 01:52 pm, John Baldwin wrote:
> jhb         2004/02/27 10:52:44 PST
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/conf             files
>     sys/ddb              db_ps.c
>     sys/kern             kern_condvar.c kern_sig.c kern_synch.c
>                          kern_thread.c sched_4bsd.c sched_ule.c
>                          sys_generic.c vfs_subr.c
>     sys/sys              condvar.h proc.h sched.h systm.h
>   Log:
>   Switch the sleep/wakeup and condition variable implementations to use the
>   sleep queue interface:
There should be little user-visible effect from this change.  Under load one 
can trigger a new diagnostic message (soon to become an assertion, but it's a 
diagnostic for now) about mismatches of msleep() wait channels and lock 
pointers.  The one case I have seen is that vm_page_sleep_if_busy() triggers 
a diagnostic as it sleeps on a vm_page * while holding the page queues mutex 
but some other thread is already sleeping on that address while holding no 
lock (implicitly using Giant for synchronization).  If you do get any weird 
crashes, be sure to turn on INVARIANTS and WITNESS (with spin mutex checking 
on, i.e. no WITNESS_SKIPSPIN) to see if you can get a less obscure panic 
message.  All of the bugs I found during testing were found by INVARIANTS + 
WITNESS and when found in that manner they are a lot easier to locate and 
fix.  Thanks.
-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
    
    
More information about the freebsd-current
mailing list