[Info-vax] C... the only winning move is not to play...

David Froble davef at tsoft-inc.com
Tue Feb 18 09:56:43 EST 2014


Johnny Billquist wrote:
> On 2014-02-14 15:16, VAXman- @SendSpamHere.ORG wrote:
>> In article <ldk1qs$s7v$2 at Iltempo.Update.UU.SE>, Johnny Billquist 
>> <bqt at softjar.se> writes:
>>> On 2014-02-13 23:06, VAXman- @SendSpamHere.ORG wrote:
>>>> In article <ldjc2s$f1b$1 at dont-email.me>, David Froble 
>>>> <davef at tsoft-inc.com> writes:
>>>>> {...snip...}
>>>>>
>>>>> What I meant was the data is read into an internal I/O buffer, and the
>>>>> desired data record is then moved into a user's pre-defined record
>>>>> buffer.  In a write of the data record, RMS moves it back into the
>>>>> internal I/O buffer, then writes the I/O buffer.
>>>>>
>>>>> If the data in the I/O buffer is locked, then is should not be stale.
>>>>
>>>> OK.  I reread.  You were talking about the locate and move modes of 
>>>> the RMS
>>>> buffers.  Locate mode is only valid using a $GET and it's 
>>>> unavailable when
>>>> the record crosses a block boundary, file access is set UPDATE, 
>>>> compressed
>>>> records (in the case of indexed files), global buffers have been 
>>>> specified
>>>> or multiple streams access the file.
>>>
>>> Really? Are locate mode not available for writes in VMS. They are in
>>> RSX. When you open the file, you tell what the maximum size you might
>>> write is, and RMS will return a pointer to where you should be writing
>>> your data. It might be a bounce buffer, but it might also be the actual
>>> disk buffer directly.
>>> And each $PUT will update the write pointer for the next write to be 
>>> done.
>>
>> RTFM:  7.3.1 Record Transfer Modes
>>
>>      For synchronous and asynchronous record operations, RMS
>>      provides two record transfer modes: move mode and locate
>>      mode.
>>
>>      In move mode, RMS copies a record from an I/O buffer into a
>>      buffer that you specify. For input operations, data is first
>>      read into the I/O buffer from a peripheral device (such as a
>>      disk), then moved to your application program buffer for
>>      processing. For output operations, you first build the
>>      record in your application program buffer; then RMS moves
>>      the record to the I/O buffer that is used to transfer the
>>      record to disk.
>>
>>      In locate mode, RMS allows the application program to access
>>      records in an I/O buffer by providing the address of the
>>      returned record as the internal buffer location instead of
>>      an application program buffer location (field RAB$L_RBF).
>>      Usually, this reduces program overhead because records can
>>      be processed directly within the I/O buffer. Locate mode is
>>      only available for input operations. Because it may not
>>      always be possible to use locate mode, you must supply an
>>      application program buffer for cases in which move mode must
>>      be used, even though you specify locate mode (see the
>>      OpenVMS Record Management Services Reference Manual).
>>
>>      Other RMS facilities allow programs to control I/O buffer
>>      space allocation or to leave space management to RMS. The
>>      following sections describe buffering.
> 
> Thanks. I wouldn't know where to search through the VMS manuals to find 
> this, but it does surprise me, since locate mode is possible in RMS on 
> RSX. And conceptually it's easy to see how to do it. Hmm, are the RMS 
> internal buffers mapped read-only from the application program perhaps? 
> That would explain why it would be only for reads in VMS...
> 
> Oh well... RSX - still an improvement on VMS... ;-)
> 
>     Johnny
> 

Not RTFM, but from old memory (and we all know how doubtful that may be).

I believe RMS runs in supervisor mode, and the RMS buffers are not 
accessable from user mode.



More information about the Info-vax mailing list