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>