[linux-audio-dev] Re: Shared memory

Ingo Oeser ingo.oeser at informatik.tu-chemnitz.de
Wed Jul 23 10:41:01 UTC 2003


Hi,

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.
> 
> Here is my suggestion to C standard: replace the "volatile"
> with "goaheadandoptimizetheseawayiwerejustwastingmytimeincodingthese
> theydonotmeananythingactually".
> 
> Instead of forcing legitimate coders to write volatile everywhere,
> those fools who write unnecessary code should be forced to add
> the proposed qualifier.

For people like you gcc supports -fvolatile.

Your code will be really slow, but you save typing 'volatile' where the
C-Compiler needs it.

Regards

Ingo Oeser



More information about the Linux-audio-dev mailing list