Messages in this thread |  | | | Date | Fri, 06 Aug 2010 13:17:18 -0700 | | From | "H. Peter Anvin" <> | | Subject | Re: [PATCH RFC 02/12] x86/ticketlock: convert spin loop to C |
| |
On 08/06/2010 07:53 AM, Jeremy Fitzhardinge wrote: > On 08/06/2010 05:43 AM, Jan Beulich wrote: >> You certainly mean "the compiler currently treats this as being:" - I >> don't think there's a guarantee it'll always be doing so. >> >>> for (;;) { >>> if (inc.tickets.head == inc.tickets.tail) >>> goto out; >>> ... >>> } >>> out: barrier(); >>> } >>> >>> (Which would probably be a reasonable way to clarify the code.) >> I therefore think it needs to be written this way. > > Agreed. >
A call/return to an actual out-of-line function is a barrier (and will always be a barrier, as it is the fundamental ABI sequence points), but to an inline function it is not.
-hpa
|  |