Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Nov 2004 13:18:49 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        David Xu <davidxu@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   Re: PERFORCE change 65074 for review
Message-ID:  <200411151318.49415.jhb@FreeBSD.org>
In-Reply-To: <200411140513.iAE5DOTv056478@repoman.freebsd.org>
References:  <200411140513.iAE5DOTv056478@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 14 November 2004 12:13 am, David Xu wrote:
> http://perforce.freebsd.org/chv.cgi?CH=65074
>
> Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40
>
> 	1. Fix a race between signal and umtx_unlock. a waiter
> 	   may be resumed by signal and left or exited, heavily
> 	   loaded test causes kernel to crash.
> 	2. Use distributed queue locks instead of single giant
> 	   lock.
>
> Affected files ...
>
> .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit
>
> Differences ...
>
> ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko)
> ====
>
> @@ -49,25 +49,48 @@
>  	pid_t		uq_pid;		/* Pid key component. */
>  };
>
>  #define	UMTX_QUEUES	128
>  #define	UMTX_HASH(pid, umtx)						\
> -    (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES)
> +    ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES)

I'm curious why you changed the hash macro here?  Low order bits of pointers 
tend to be zero due to alignment, so I think this will result in fewer 
"useful" bits and more collisions and longer chains.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411151318.49415.jhb>