Started looking at making malloc mpsafe.

First issue I came across was this brokenish code in
uma_core.c:page_alloc():

        if (lockstatus(&kernel_map->lock, NULL)) {
                *pflag = UMA_SLAB_KMEM;
                p = (void *) kmem_malloc(kmem_map, bytes, wait);
        } else {
                *pflag = UMA_SLAB_KMAP;
                p = (void *) kmem_alloc(kernel_map, bytes);
        }

using lockstatus won't work for smp.

I think a solution is to do a trylock on the kmem_map, then have
kmem_malloc either recurse on the lock, or take a flag to tell it
not to bother locking.

?



-- 
-Alfred Perlstein [[EMAIL PROTECTED]]
'Instead of asking why a piece of software is using "1970s technology,"
 start asking why software is ignoring 30 years of accumulated wisdom.'
Tax deductible donations for FreeBSD: http://www.freebsdfoundation.org/

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

Reply via email to