[linux-audio-dev] Re: Shared memory

Alfons Adriaensen fons.adriaensen at alcatel.be
Wed Jul 23 08:20:01 UTC 2003


On Fri, Jul 18, 2003 at 04:14:23PM +0300, Juhana Sadeharju wrote:
> >From: Alfons Adriaensen <fons.adriaensen at alcatel.be>
> >
> >I don't have your original message with the code at hand here, so
> >this may be a false alarm. Did you think of making all pointers 
> >into shared memory volatile? IIRC you are testing on a counter
> >that is incremented by another process - such a small memory access
> >could easily be optimised away.
> 
> And that was it!! What braindamaged compiler authors!
> In the code
> 
>   k = -1;
>   for (;;) {
>     if (k != nums[1]) {
>       k = nums[1];
>       fprintf(stderr,"%i\n",k);
>     }
>     fprintf(stderr,"g");
>   }
> 
> The whole if was apperently optimized away. The code printed only one
> number and a lot of "g"s. Of the two choises (1) nums[1] is updated
> elsewhere, (2) it is unnecessary code, coder just tries to be clever,
> the compiler authors selected the latter.

Yes. If a compiler would select [1] by default, most optimizations would
be impossible. So you have to tell it by using 'volatile'.


-- 
Fons




More information about the Linux-audio-dev mailing list