🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.dec
Article #311

Re: How to read/write VMS (RMS?) disk blocks asynchronously

#311
From: David Stine
Date: Wed, 12 Aug 1992 09:54
46 lines
2910 bytes
In article <MRL.92Aug11103051@sun4.uai.com> mrl@uai.com (Mark R. Ludwig) writes:
>I'm looking for RTFM pointers.  
>
>[...]

>I've read much of the RMS Reference, and concluded that the
>asynchronous support there is quite limited, because it only allows
>one operation at a time (on a FAB, or RAB, I forget exactly which).
>For our application it is not feasible to have multiple FABs or RABs
>for a single file.

Isn't RMS a gas? ;-) 

>I've also heard that it may be possible to use $QIO for I/O to and
>from disk files, but it's not at all obvious from the various manuals
>how one accomplishes this without requiring xxx_IO privileges and
>different code for different disk drivers.  It's also unclear how RMS
>fits into the $QIO picture, in terms of the usual information about
>the file (modification dates, etc.).

Yes, this is possible. The facility you are looking for is called the XQP
(eXtended Qio Processor) and is documented in the "IO User's Manual", Volume
8. 

Basically, in making calls to the XQP, you must deal with the file at a
_block_ level. There is no concept of a "record" to the XQP. RMS calls the XQP
to perform file/directory/block IO stuff; RMS figures out how to make blocks
into records. The block numbers you call out for operations in the XQP are
"virtual" blocks; ie, you view the disk as one huge collection of randomly
accessable blocks; there are no gaps in the VBN's on the volume, regardless un
underlying physical structure or bad block replacements. The XQP, in turn,
will make calls to the disk driver(s) in order to access the correct
logical/physical blocks.

To use the XQP to just create/read/write/delete/enter files in the normal
fashion, you don't need any privs other than those you would need to access
the same file via RMS.  If you start trying to call out logical or physical
block numbers, then you would need LOG_IO or PHY_IO.

The XQP is not for the faint of heart to use. The documentation tends to make
asumptions about your knowledge of ODS-2 and ODS-1. But you _can_ get very
fast, async IO to/from files/disks/magtapes with the XQP. You might try
looking on the DECUS tapes for examples of how to use the XQP. Reading the XQP
fiche for answers is _not_ easy.

dsa
Technical Details
Message-ID: <1992Aug12.095437.19522@csl.sri.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!sun-barr!olivea!apple!csl!dstine
References: <MRL.92Aug11103051@sun4.uai.com>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!sun-barr!olivea!apple!csl!dstine
From: dstine@cisco.com (David Stine)
Newsgroups: comp.sys.dec
Subject: Re: How to read/write VMS (RMS?) disk blocks asynchronously
Message-ID: <1992Aug12.095437.19522@csl.sri.com>
Date: 12 Aug 92 09:54:37 GMT
References: <MRL.92Aug11103051@sun4.uai.com>
Sender: news@csl.sri.com (NEWS Administrator)
Organization: cisco Systems, Menlo Park, California, USA
Lines: 46
X-Disclaimer: The views expressed in this message are those of an
       individual at SRI International, and do not necessarily
       reflect those of the company.
Nntp-Posting-Host: regal.cisco.com