cvs commit: src/sys/kern kern_umtx.c
David Xu
davidxu at freebsd.org
Tue Nov 30 04:24:35 PST 2004
Thanks to jhb@, he had reviewed earlier version for me.
David Xu wrote:
>davidxu 2004-11-30 12:02:53 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/kern kern_umtx.c
> Log:
> 1. use per-chain mutex instead of global mutex to reduce
> lock collision.
> 2. Fix two race conditions. One is between _umtx_unlock and signal,
> also a thread was marked TDF_UMTXWAKEUP by _umtx_unlock, it is
> possible a signal delivered to the thread will cause msleep
> returns EINTR, and the thread breaks out of loop, this causes
> umtx ownership is not transfered to the thread. Another is in
> _umtx_unlock itself, when the function sets the umtx to
> UMTX_UNOWNED state, a new thread can come in and lock the umtx,
> also the function tries to set contested bit flag, but it will
> fail. Although the function will wake a blocked thread, if that
> thread breaks out of loop by signal, no contested bit will be set.
>
> Revision Changes Path
> 1.17 +212 -115 src/sys/kern/kern_umtx.c
>
>
>
>
More information about the cvs-src
mailing list