Date: Sun, 14 Dec 2014 09:33:47 +0300 From: Chagin Dmitry <dchagin@freebsd.org> To: Mateusz Guzik <mjguzik@gmail.com> Cc: Benjamin Kaduk <bjkfbsd@gmail.com>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org> Subject: Re: svn commit: r275751 - in head: share/man/man9 sys/kern sys/sys Message-ID: <20141214063346.GA2966@dchagin.static.corbina.net> In-Reply-To: <20141213215011.GA17746@dft-labs.eu> References: <201412132100.sBDL0BvR094009@svn.freebsd.org> <CAJ5_RoCnMNEEa86besbhfKTxf-wOhwBy%2BjktLB7%2Bod=zkSQ6Aw@mail.gmail.com> <20141213213111.GA2070@dchagin.static.corbina.net> <20141213215011.GA17746@dft-labs.eu>
index | next in thread | previous in thread | raw e-mail
On Sat, Dec 13, 2014 at 10:50:11PM +0100, Mateusz Guzik wrote: > On Sun, Dec 14, 2014 at 12:31:11AM +0300, Chagin Dmitry wrote: > > On Sat, Dec 13, 2014 at 04:03:47PM -0500, Benjamin Kaduk wrote: > > > On Sat, Dec 13, 2014 at 4:00 PM, Dmitry Chagin <dchagin@freebsd.org> wrote: > > > > > > > > Author: dchagin > > > > Date: Sat Dec 13 21:00:10 2014 > > > > New Revision: 275751 > > > > URL: https://svnweb.freebsd.org/changeset/base/275751 > > > > > > > > Log: > > > > Add _NEW flag to mtx(9), sx(9), rmlock(9) and rwlock(9). > > > > A _NEW flag passed to _init_flags() to avoid check for double-init. > > > > > > > > > > > Can you please say a bit more about why this is desired and what it will be > > > used for? > > > > > If the kernel has been compiled with INVARIANTS _init() will assert that the > > lock has not been initialized multiple times. _NEW flag is needed to skip this. > > as _init() does expect you to zero lock first. > > it should be used carefully, when you are sure its safe, > > to avoid bzero'ing lock struct. ugh > > > > I think the actual question was when would you call _init_flags and not > want _NEW and it would have a potential to detect double init. > > I think a better approach would be to have a hash with addresses of all > locks in use. Then _init/_destroy would add/remove it respectively and > we would not be dependent on the state of the lock (e.g. struct could be > zeroed by unrelated code and then double init is not detected). > > Chains locked separately of course. > > I didn't try that, should be totally fine for invariants. > maybe you're right, I think it would be overkill -- Have fun! chdhelp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141214063346.GA2966>
