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>