PERFORCE change 65074 for review
David Xu
davidxu at freebsd.org
Mon Nov 15 15:30:45 PST 2004
John Baldwin wrote:
>On Sunday 14 November 2004 12:13 am, David Xu wrote:
>
>
>>http://perforce.freebsd.org/chv.cgi?CH=65074
>>
>>Change 65074 by davidxu at 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.
>
>
>
Yeah, I orignally wanted to reduce collisions but seems got
an opposited result. ;-)
More information about the p4-projects
mailing list