Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Nov 2004 20:24:30 +0800
From:      David Xu <davidxu@freebsd.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/kern kern_umtx.c
Message-ID:  <41AC667E.7030108@freebsd.org>
In-Reply-To: <200411301202.iAUC2rAd085211@repoman.freebsd.org>
References:  <200411301202.iAUC2rAd085211@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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
>
>
>  
>



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