FILEDEF ddname DISK vaddr
This command associates the name of the virtual minidisk referred to in your pro
gram,"ddname", to the virtual address of the minidisk, "vaddr". The "ddname" is
input to theDISKID function.
TheDISKID function obtains the necessary information on the physical organiza
tion of theRESERVEd mini disk that will be used by the DASD Block I/O Service.
TheDISKID function obtains the virtual address, the block size, and the offset of
this minidisk. (In the above example, the block size is1024 bytes and the offset is
8.)
Before using theDASD Block I/O System Service, you must initialize your virtual
machine forIUCV communications. IUCV enables a program running in your vir
tual machine to communicate withDASD Block I/O. Use the IUCV DECLARE
BUFFER function or theCMS HNDIUCV SET macro to initialize your virtual
machine forIUCV communications. You should use the CMS IUCV support since
this support allows other programs running in the virtual machine to use IUCV.
To establish a path between your virtual machine and theDASD Block I/O System Service, your program must issue either the IUCV CONNECT function or the CMSIUCV CONNECT macro. The USERID parameter on the IUCV CON
NECT macro must be"*BLOCKIO" and the PRMDATA parameter must be "YES". PRMDATA=YES indicates, in this case, that the your program will
receive messages in its parameter list. Information about the minidisk returned by
theDISKID function -the virtual address, blocksize, and offset -must be moved
into theIPUSER field of the IUCV CONNECT parameter list.
If all the parameters required byDASD Block I/O are valid, DASD Block I/O
issues theIUCV ACCEPT function with the PRI\1DAT A= YES parameter speci
fied. In this case, PRMDAT A=YES indicates that the DASD Block I/O System Service will receive messages in its parameter list. If invalid parameters are passed
from the CONNECT toDASD Block I/O, DASD Block I/O issues an IUCV SEVER on the path.
IfDASD Block I/O issued an IUCV ACCEPT, your virtual machine receives an IUCV Connection Complete external interrupt. The IPUSER field of the Con
nection Complete external interrupt buffer contains the starting and ending block
numbers allowable on theDASD Block I/O requests, and contains flags describing
the status of the virtual device. The starting block number(START BLOCK) is 1
minus the offset. The ending block number (END BLOCK) is the total number of
available blocks minus the offset.Since DASD Block I/O bypasses the CMS file system, START BLOCK can con
tain a negative value (1 -OFFSET) and these blocks can be used by DASD Block
I/O. In the example above,START BLOCK would be -7 (1 -8) and END
BLOCK would be201 (209 - 8). The range -7 to 201 equals 209 - the number of
available blocks on the device. Data block 1 is actually physical block 9, data block
2 is actually physical block10, ... , and the last block (data block 201) is actually
physical block209. Programs using DASD Block I/O should only write data
blocks; therefore, a block number less than 1 should never be written. This would
destroy a block that was used to implement theCMS file structure. Using the DASD Block I/O System Service from eMS 353
This command associates the name of the virtual minidisk referred to in your pro
gram,
input to the
The
tion of the
The
this minidisk. (In the above example, the block size is
8.)
Before using the
machine for
tual machine to communicate with
BUFFER function or the
machine for
this support allows other programs running in the virtual machine to use IUCV.
To establish a path between your virtual machine and the
NECT macro must be
receive messages in its parameter list. Information about the minidisk returned by
the
into the
If all the parameters required by
issues the
fied. In this case, PRMDAT A=
from the CONNECT to
If
nection Complete external interrupt buffer contains the starting and ending block
numbers allowable on the
the status of the virtual device. The starting block number
minus the offset. The ending block number (END BLOCK) is the total number of
available blocks minus the offset.
tain a negative value (1 -
I/O. In the example above,
BLOCK would be
available blocks on the device. Data block 1 is actually physical block 9, data block
2 is actually physical block
physical block
blocks; therefore, a block number less than 1 should never be written. This would
destroy a block that was used to implement the