Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Dec 2005 11:19:55 +0800
From:      prime <guomingyan@gmail.com>
To:        rookie@gufi.org
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Puzzled about turnstile's lock
Message-ID:  <1fa17f810512171919k4a16f68dh3ad0d5f294fb3f23@mail.gmail.com>
In-Reply-To: <3bbf2fe10512171207n41c9308dm@mail.gmail.com>
References:  <1fa17f810512170027h58ccadbcq9f8d3187f35a2ddd@mail.gmail.com> <3bbf2fe10512171207n41c9308dm@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 12/18/05, rookie <asmrookie@gmail.com> wrote:
>
>
>  Hi hackers,
> > I want to understand the current implementation of
> > turnstile,and meet some questions about its locks' logicality.
>
>
> [snip]
>
> It's used to lock td_contested member of struct thread structure and all
> issues linked to it (as you can see in the source tree). It seems used in=
 a
> clean way.
>
> Attilio
>
> turnstile's ``ts_blocked" field is protected by both
> > ``td_contested" lock and its turnstile_chain lock, but
> > I think its turnstile_chain lock is enough,because we
> > allways get the turnstile_chain lock before our manipulation
> > on ``ts_blocked".
> > If td_contested lock were needed ,reading ts_blocked is
> > not protected by td_contested lock,in the kernel source, why?
> >
> > Thanks.
> > --
> > Three passions, simple but overwhelmingly strong, have governed my life=
:
> > the longing for love, the search for knowledge, and unbearable pity for
> > the suffering of mankind.
> >                         ---------Bertrand Russell
> > _______________________________________________
> > freebsd-hackers@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> > To unsubscribe, send any mail to "
> > freebsd-hackers-unsubscribe@freebsd.org"
> >
>
>
>
> --
> Peace can only be achieved by understanding - A. Einstein


Thanks,I think I get it now.As mentioned in arch-handbook
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
You can protect a datum with multiple locks.
Then for reading that data you simply need
to have a read lock of one of the locks.
However, to write to the data, you need to
have a write lock of all of the locks
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
We also can read "ts_blocked" if only td_contested
lock is held,but this way is not needed now.

--
Three passions, simple but overwhelmingly strong, have governed my life:
the longing for love, the search for knowledge, and unbearable pity for
the suffering of mankind.
                         ---------Bertrand Russell



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1fa17f810512171919k4a16f68dh3ad0d5f294fb3f23>