[PATCH] timecounters: Fix timehand generation read/write

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Jun 9 07:24:05 UTC 2015



On 04/06/15 20:10, Joerg Sonnenberger wrote:
> On Wed, Jun 03, 2015 at 11:00:53PM +0200, Sebastian Huber wrote:
>> In my interpretation of the C standard this is implementation defined behaviour.  See also:
>>
>> https://gcc.gnu.org/onlinedocs/gcc/Volatiles.html
> I don't think that is nearly correct as far as any data accessibly from
> global objects is concerned beside the volatile. C11 5.1.2.3 (2) and (3)
> are the relevant clauses. An assignment to a volatile object is a
> sequence point with side effects. All assignments before that sequence
> point must be visible to whatever possible side effect the volatile has.
> Similar, it can implicitly change all globals, so no read can be moved
> from after the sequence point to before. This is much stricter than the
> normal as-if rule, since a sequence of side-effect-free operations can
> be implemented anyway the compiler likes. A different interpretation
> would be quite questionable.
>
> Note that this is all just about the rules of the C abstract machine. It
> is not about the observable behavior of a multi-processor machine.
> Whether or not TSO is enough for this purpose is a completely different
> question.

I didn't want to start a discussion about the C standard interpretation. 
GCC generates code according to their documentation:

https://lists.freebsd.org/pipermail/freebsd-hackers/2015-May/047778.html

In case you think GCC is doing something wrong, then maybe you can file 
a bug report for GCC.

Anyway we need real memory barriers.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the freebsd-hackers mailing list