[linux-audio-dev] Re: Shared memory

Juhana Sadeharju kouhia at nic.funet.fi
Wed Jul 23 07:40:01 UTC 2003


>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.

Juhana



More information about the Linux-audio-dev mailing list