Re: powerd

From: Giorgos Keramidas <keramida_at_linux.gr>
Date: Tue, 6 Dec 2005 16:29:50 +0200
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
Received on Tue Dec 06 2005 - 13:30:53 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:48 UTC