Giorgos Keramidas keramida at linux.gr
Tue Dec 6 06:30:53 PST 2005

On 2005-12-06 14:18, Fredrik Lindberg <fli+freebsd-current at shapeshifter.se> wrote:
>Dag-Erling Sm?rgrav wrote:
>>Fredrik Lindberg <fli+freebsd-current at shapeshifter.se> writes:
>>>Dag-Erling Sm?rgrav wrote:
>>>> If the devd loop is an *alternative* to the polling loop, there's
>>>> even less reason to use threads.
>>> Yes it's an alternative, reading a variable versus doing a sysctl call
>>> each interation. It seemed like I good idea, when I first wrote this
>>> (almost a year ago), to have a thread providing a cached value of the
>>> AC state. But maybe I was trying to be too smart or something.
>> Yes.  Not only is it a bad design idea, but the implementation is
>> wrong, and likely to fail badly when compiled at high optimization
>> levels.
> Ignoring the fact that it does work with -O3 (gcc 3.4.4), could you
> please explain why it has the potential of failing with high
> optimizations.

I haven't looked at the source code, but I think what Dag-Erling means
is that optimizing compilers, in high optimization mode, may inhibit
sequential read operations of the same variable, trying to 'optimize'
many read operations that would (to the best of their knowledge) return
the same result.

This is never going to happen if the variable is declared as 'volatile'
though, so I'm not sure if it applies in this case, until I look at the
sources of powerd.

- Giorgos

More information about the freebsd-current mailing list