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>
next in thread | previous in thread | raw e-mail | index | archive | help
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-ini= t. > > > > > > > > > > > Can you please say a bit more about why this is desired and what it w= ill be > > > used for? > > >=20 > > If the kernel has been compiled with INVARIANTS _init() will assert tha= t the > > lock has not been initialized multiple times. _NEW flag is needed to sk= ip 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 > >=20 >=20 > 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. >=20 > 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). >=20 > Chains locked separately of course. >=20 > I didn't try that, should be totally fine for invariants. >=20 maybe you're right, I think it would be overkill --=20 Have fun! chd
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141214063346.GA2966>