[Info-vax] Volatile, was: Re: yet another sys$qiow question
Johnny Billquist
bqt at softjar.se
Thu Aug 20 14:24:27 EDT 2015
On 2015-08-20 17:00, Bob Gezelter wrote:
> On Thursday, August 20, 2015 at 10:53:01 AM UTC-4, JF Mezei wrote:
>> On 15-08-20 10:45, Craig A. Berry wrote:
>>> On 8/20/15 8:54 AM, JF Mezei wrote:
>>>> So, after reading this, I am still puzzled...
>>>>
>>>> in DEC-C, how does one declare a variable as "volatile" ?
>>>
>>> As with any C compiler, using the "volatile" keyword, obviously:
>>
>> This is the first I ever heard of it, or seen it. And been doing $QIOs
>> since late 1980s. Pretty scary eh ?
>
> JF,
>
> Actually, not.
>
> The standard way (as Hoff has said) is to either use an event flag or an AST. Either of these work as defined, and the OpenVMS IO Post processing is responsible for ensuring that your memory is in a consistent state when the IO is "completed".
volatile have nothing to do with your memory being consistent. It is
about how the compiler is allowed to optimize access to the memory. The
memory can hold correct content, but the compiled code never reads it.
> The problem arises when one checks the contents of an IOSB upon which one has not received one of the normal completion indicators (e.g, spinning on the IOSB contents; checking to see if other IO's have completed when receiving an AST on a different IO).
Uh... No... The problem arises when you repeatedly reads a value. If it
isn't declared volatile, the compiler might "know" that the value have
not changed from one read to the next, and thus can optimize away
subsequent reads.
Johnny
More information about the Info-vax
mailing list