Skip site navigation (1)Skip section navigation (2)
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>