Re: [linux-audio-dev] Re: Shared memory

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] Re: Shared memory
From: Alfons Adriaensen (fons.adriaensen_AT_alcatel.be)
Date: Wed Jul 23 2003 - 15:05:05 EEST


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


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Wed Jul 23 2003 - 15:12:56 EEST