[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 08 Aug 2007 02:47:53 -0400
From: Chris Snook <csnook@...hat.com>
To: Chris Friesen <cfriesen@...tel.com>
CC: Zan Lynx <zlynx@....org>, Jerry Jiang <wjiang@...ilience.com>,
"Robert P. J. Day" <rpjday@...dspring.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: why are some atomic_t's not volatile, while most are?
Chris Friesen wrote:
> Chris Snook wrote:
>
>> This is not a problem, since indirect references will cause the CPU to
>> fetch the data from memory/cache anyway.
>
> Isn't Zan's sample code (that shows the problem) already using indirect
> references?
Yeah, I misinterpreted his conclusion. I thought about this for a
while, and realized that it's perfectly legal for the compiler to re-use
a value obtained from atomic_read. All that matters is that the read
itself was atomic. The use (or non-use) of the volatile keyword is
really more relevant to the other atomic operations. If you want to
guarantee a re-read from memory, use barrier(). This, incidentally,
uses volatile under the hood.
-- Chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists