svn commit: r324609 - head/sys/sys
Ian Lepore
ian at freebsd.org
Sat Oct 14 00:30:54 UTC 2017
On Fri, 2017-10-13 at 23:38 +0200, Svatopluk Kraus wrote:
> MTX_UNOWNED is a flag. You did not change its value from 4 to 0, you
> removed it actually. I have very bad feeling about it. But maybe, it's
> really possible and in that case, a very good explanation should be
> provided.
>
> Svata
>
The part that scares me is that DESTROYED may have been defined as
CONTESTED|UNOWNED for subtle and clever reasons lost in the mists of
time. Any of the places that are testing the MTX_CONTESTED bit may
have been relying somehow on the fact that a destroyed mutex has that
bit set.
Then again, maybe Mateusz has carefully analyzed all this stuff, and we
should just relax. :)
-- Ian
>
> On Fri, Oct 13, 2017 at 10:31 PM, Mateusz Guzik <mjg at freebsd.org>
> wrote:
> >
> > Author: mjg
> > Date: Fri Oct 13 20:31:56 2017
> > New Revision: 324609
> > URL: https://svnweb.freebsd.org/changeset/base/324609
> >
> > Log:
> > mtx: change MTX_UNOWNED from 4 to 0
> >
> > The value is spread all over the kernel and zeroing a register is
> > cheaper/shorter than setting it up to an arbitrary value.
> >
> > Reduces amd64 GENERIC-NODEBUG .text size by 0.4%.
> >
> > MFC after: 1 week
> >
> > Modified:
> > head/sys/sys/mutex.h
> >
> > Modified: head/sys/sys/mutex.h
> > ===================================================================
> > ===========
> > --- head/sys/sys/mutex.h Fri Oct 13 20:29:35
> > 2017 (r324608)
> > +++ head/sys/sys/mutex.h Fri Oct 13 20:31:56
> > 2017 (r324609)
> > @@ -65,15 +65,11 @@
> > * State bits kept in mutex->mtx_lock, for the DEFAULT lock type.
> > None of this,
> > * with the exception of MTX_UNOWNED, applies to spin locks.
> > */
> > +#define MTX_UNOWNED 0x00000000 /* Cookie for free
> > mutex */
> > #define MTX_RECURSED 0x00000001 /* lock recursed
> > (for MTX_DEF only) */
> > #define MTX_CONTESTED 0x00000002 /* lock contested
> > (for MTX_DEF only) */
> > -#define MTX_UNOWNED 0x00000004 /* Cookie for free mutex */
> > -#define MTX_FLAGMASK (MTX_RECURSED | MTX_CONTESTED |
> > MTX_UNOWNED)
> > -
> > -/*
> > - * Value stored in mutex->mtx_lock to denote a destroyed mutex.
> > - */
> > -#define MTX_DESTROYED (MTX_CONTESTED | MTX_UNOWNED)
> > +#define MTX_DESTROYED 0x00000004 /* lock destroyed
> > */
> > +#define MTX_FLAGMASK (MTX_RECURSED | MTX_CONTESTED |
> > MTX_DESTROYED)
> >
> > /*
> > * Prototypes
> >
More information about the svn-src-all
mailing list